vba - 查找时的错误代码为 91

标签 vba excel

这似乎是一个简单的问题,但我对 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/

相关文章:

excel - 如何使用 VBA 从 Excel 向服务器发送 HTTP POST 请求?

excel - 将每个工作表导出到单独的 csv 文件

excel - 通过VBA解析Json数组

php - 将 sheet1(excel) 转换为标准 sheet2(excel) 的程序

sql-server - EXCEL SQL SELECT 无法识别 ThisWorkBook 中的字段名称

excel - 使用 VBA 提取 Microsoft Exchange 自定义/扩展属性?

excel - Excel vba 能做什么而 C# 不能做什么

excel - 与excel VBA中的匹配函数不匹配

excel - 列中的每个新值自动乘以 X

vb.net - FormulaR1C1 不适用于 SUMME