VBA Excel: 使用 Range.Find 方法时出现错误 1004

VBA Excel: error 1004 when using Range.Find method

我正在学习 Range.Find 方法。我在 Excel 的 A 列中有一列字母(a 到 t),从第 1 行到第 20 行。

此代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

Set DataRange = Range("A1", Range("A1").End(xlDown))
WhatToFind = InputBox("Enter text to search for:", "Find Text")
Range(DataRange).Find(WhatToFind).Select

End Sub

...当我收到此错误时一直到最后一行: "Run-time error 1004: Application-defined or object-defined Error"。 它没有找到 Find 匹配项。 谁能指出我的错误吗?非常感谢。

将最后一行更改为:

DataRange.Find(WhatToFind).Select

DataRange 已经是一个 Range 对象,因此不需要列为 Range(DataRange)

.Find() returns 您通常要分配给范围变量的范围。我会像这样稍微修改你的代码:

Public Sub MyFind3()

'Accepts an input for a fluid length search field (column A)
Dim WhatToFind As String
Dim DataRange As Range

WhatToFind = InputBox("Enter text to search for:", "Find Text")
Set DataRange = Range("A1", Range("A1").End(xlDown)).Find(What:=WhatToFind)
if not DataRange is Nothing then
  DataRange.select
else
  msgbox (WhatToFind & " wasn't found")
end if

End Sub

这给了你能够处理 'not found' 条件的优势,并且你有一个范围变量,你现在可以用它做其他事情。

此外,请注意,当您调用 .Find() 时,它将使用最后的设置执行,因此请设置更多参数,例如 LookInLookAtMatchCase 将有助于确保此搜索完全按照您的预期进行。