查找方法对象变量或块变量未在 excel VBA 中设置

Find method object variable or with block variable not set in excel VBA

我直接从微软网站上得到这个例子,这是第一个关于如何使用 find 方法的例子。问题是它给出错误 91:对象变量或未设置块变量。它应该找到单元格的值为 2 的位置并将其更改为 5,如果范围内有任何“2”,它就会这样做,但完成后它也会给出错误。我做错了什么?

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

你的问题是这一行:

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

VB 将计算所有表达式,因此如果 c 为 Nothing,它仍将计算 c.Address 并抛出错误,因为您无法访问空值的 属性。 您需要重构代码以检查不同块中的每个 "And" 条件。