我在很长一段时间后回到VBA,并试图实现一个循环来查找多次出现的值。我有点挣扎,拖网。我找到了这个例子;
Sub Button1_Click()
With Worksheets(1).Range("a1:a50")
Set c = .Find(2, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 99
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub
这来自MSDN(https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-find-method-excel)所以我倾向于认为这是一个很好的例子。我重新设计它以适应我的应用程序,并出现错误。然后我尝试直接运行MSDN给出的示例。我得到了同样的错误,如下所示。这发生在
行Loop While Not c Is Nothing And c.Address <> firstAddress
任何人都可以对此有所了解。我很惊讶MSDN示例不起作用。
感谢您的期待
答案 0 :(得分:1)
你会认为它会,但他们从不打扰纠正它。问题是你要删除2的所有实例,所以c最终是Nothing,代码试图检查Nothing的地址(因此错误)。你只需要检查c是否为Nothing。
顺便说一句,你可以使用查找和替换。
Sub Button1_Click()
With Worksheets(1).Range("a1:a50")
Set c = .Find(2, LookIn:=xlValues)
If Not c Is Nothing Then
Do
c.Value = 99
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub