2015-02-08 71 views
0

我直接从Microsoft网站获得了此示例,这是如何使用find方法的第一个示例。问题是它给出错误91:对象变量或未设置块变量。它应该找出单元格的值为2并将其更改为5,并且如果在该范围内有任何“2”,但它在完成时也会发出错误。我究竟做错了什么?查找方法对象变量或块变量未在Excel中设置VBA

Sub example() 

With Worksheets(1).Range("a1:a10") 
Set c = .Find(2, LookIn:=xlValues) 
If Not c Is Nothing Then 
    firstAddress = c.Address 
    Do 
     c.Value = 5 
     Set c = .FindNext(c) 
    Loop While Not c Is Nothing And c.Address <> firstAddress 
    End If 

    End With 

End Sub 
+1

该示例中存在一个错误,由5替换该值导致:如果不这样做,它会起作用,因为find会将循环返回到第一个位置,这意味着一旦进入循环。谁写这个例子从来没有测试过,它每隔几个月就会在这里出现;-) – 2015-02-08 17:00:12

回答

0

你的问题是这样的一行:

Loop While Not c Is Nothing And c.Address <> firstAddress 

VB将评估所有表达式,所以如果c是没有,它仍然会评估c.Address并抛出一个错误,因为你不能访问的属性一个空值。 您需要重构代码以检查不同块中的每个“And”条件。

相关问题