这似乎是一个简单的问题,但我对 VBA 非常陌生,并且不确定为什么会收到错误。
Dim c As String
c = Sheet2.Range("B3:B54").Find("NLwk01")
Error code is 91: Object variable or With block variable not set.
我认为我应该使用单元格而不是范围,但这会产生另一个错误
Error code 5: Invalid procedure call or argument.
最佳答案
正如评论线程中提到的,Excel VBA Find()
函数返回 Range
对象。因此,与您的特定示例相关,可以按以下示例片段进行编码:
Sub FindRowIndex()
Dim c
Dim rowIdx As Integer
Dim cellValue As String
'return Range object if found
Set c = Sheet2.Range("B3:B54").Find("NLwk01")
If Not c Is Nothing Then
'return the row index (shown as an example)
rowIdx = c.Row
'return the same string used as search criterion "NLwk01"
cellValue = c.Value
End If
End Sub
与您的案例搜索区域 ("B3:B54"
) 相关,rowIdx
可以声明为 Integer
;对于扩展区域,您可以使用Long
。
此外,正如评论线程中提到的,您可以声明:Dim c As Range
。
希望这会有所帮助。
关于vba - 查找时的错误代码为 91,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609913/