【问题标题】:Excel VBA .Find() errorExcel VBA .Find() 错误
【发布时间】:2015-06-13 13:54:33
【问题描述】:

我有以下一段 VBA 代码,但是当我运行它时,我得到 Infinite MsgBoxes 显示我在 ID 地址上方 4 行的相同地址。我必须用 Ctrl+Break 停止执行。

我一直试图让代码工作,在我看来错误来自 Find() 方法。在我的代码的其他版本中,我得到“对象'范围'的方法'查找'失败。有关如何解决此问题的任何想法?谢谢。

Function CheckFinancials(ID As Integer) As Double
    Dim MyArray(1 To 4) As Integer
    Dim Guide As Range
    Set Guide = Worksheets("Financials").Range(Cells(1, 1),Cells(Worksheets("Financials").UsedRange.Rows.Count, 1))
    Set Guide = Guide.Find(ID)

    MsgBox Guide.Address

【问题讨论】:

  • 您的代码完全符合我的要求,非常适合我。它在列中找到单个 ID 值,显示一个 MsgBox,然后退出。也许问题出在您的调用例程中,并且存在无限循环。

标签: vba excel find


【解决方案1】:

你的发现遗漏了很多参数(试着记录一下,你会看到),测试一下:

Function CheckFinancials(ID As Integer) As Double
    Dim MyArray(1 To 4) As Integer
    Dim Guide As Range
    Set Guide = Worksheets("Financials").Range(Cells(1, 1), Cells(Worksheets("Financials").UsedRange.Rows.Count, 1))
    Set Guide = Guide.Find(What:=ID, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    MsgBox Guide.Address

【讨论】:

  • 并非所有参数都是必需的,但如果您不指定它们,那么它们的设置是运气。无论是在代码中还是从 UI 对话框中,它们都将被设置为最后一个 find 函数调用所具有的任何值。这都是一组参数,一个影响另一个。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多