我正在学习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:应用程序定义的错误或对象定义的错误"。 它找不到查找匹配项。 任何人都可以指出我的错误吗?非常感谢。
答案 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()
时,它会以最后的设置执行,因此请设置更多参数,例如LookIn
,LookAt
和{ {1}}将有助于确保此搜索完全符合您的预期。
答案 1 :(得分:1)
将最后一行更改为:
DataRange.Find(WhatToFind).Select
DataRange
已经是Range
个对象,因此无需列为Range(DataRange)