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

时间:2015-03-26 20:15:30

标签: excel-vba range vba excel

我正在学习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

...当我收到此错误时,工作到最后一行: "运行时错误1004:应用程序定义的错误或对象定义的错误"。 它找不到查找匹配项。 任何人都可以指出我的错误吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

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

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

这使您能够处理'未找到'条件,并且您有一个范围变量,您现在可以使用其它方法。

此外,请注意,当您致电.Find()时,它会以最后的设置执行,因此请设置更多参数,例如LookInLookAt和{ {1}}将有助于确保此搜索完全符合您的预期。

答案 1 :(得分:1)

将最后一行更改为:

DataRange.Find(WhatToFind).Select

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