Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查找时错误代码为91_Vba_Excel - Fatal编程技术网

Vba 查找时错误代码为91

Vba 查找时错误代码为91,vba,excel,Vba,Excel,这似乎是一个简单的问题,但我对VBA非常陌生,我不知道为什么我会收到这个错误 Dim c As String c = Sheet2.Range("B3:B54").Find("NLwk01") 错误代码为91:未设置对象变量或带块变量 我想我应该使用单元格而不是范围,但这给了我另一个错误 错误代码5:过程调用或参数无效 正如注释线程中提到的,Excel VBAFind()函数返回范围对象。因此,对于您的特定示例,可以按照以下示例代码段进行编码: Sub FindRowIndex() D

这似乎是一个简单的问题,但我对VBA非常陌生,我不知道为什么我会收到这个错误

Dim c As String
c = Sheet2.Range("B3:B54").Find("NLwk01")
错误代码为91:未设置对象变量或带块变量

我想我应该使用单元格而不是范围,但这给了我另一个错误

错误代码5:过程调用或参数无效


正如注释线程中提到的,Excel VBA
Find()
函数返回
范围
对象。因此,对于您的特定示例,可以按照以下示例代码段进行编码:

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
可以声明为
整数
;对于扩展区域,您可以使用
Long

此外,如评论线程中所述,您可以声明:
dimc为范围


希望这能有所帮助。

find
返回一个范围对象,我想。。。因此,您需要将
c
声明为一个范围。并且设置c=。绝对正确,因此存在不匹配。如果NLwk01实际上存在于B3:B54中,则代码将正常工作。如果是这种情况,则将NLwk01分配给c,因为是a的defult属性。如果找不到它(并且您没有使用足够的参数来正确定义),那么就没有可以分配给c的内容,您将收到错误91。请将您的问题标题改为有意义的内容。VBA Excel在您的标记中是显而易见的,并且您有一个无法解决的问题,这一事实是显而易见的,因为您正在这里发布。将所有这些从标题中删除,会留下一个简单的错误,即标题没有任何有意义的内容。你的标题应该以一种对在搜索结果中找到它的未来读者有用的方式来描述实际问题。谢谢。@Jeeped,很高兴知道!为什么不将rowIdx声明为Long,将c声明为Range?我认为OP希望将单元格的值存储到变量中,而不是单元格的位置。@Jeeped:为了编码的简单性,c声明为variant,但是,我同意,它可以声明为Range。顺致敬意,