我是编写VBA代码的新手,并且在线下面遇到了这个代码,这与我想要做的非常相似。但是,当我尝试运行它时,它会突出显示行Loop While Not c Is Nothing And c.Address <> firstAddress
,并弹出一条消息说&#34;对象变量或With块变量未设置&#34;。
有谁知道如何解决这个问题?非常感谢任何帮助!
Sub Commodity()
'
' Commodity Macro
' Commodity
'
'
With Worksheets(1).Range("a1:a500")
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
答案 0 :(得分:2)
问题在于您正在寻找数字2并将其更改为5.一旦它改变了所有这些,它将继续在循环内从顶部进行搜索,但是{{1} }第二次将无效(因为它无法找到任何东西),当它试图评估c
时会导致错误。
当您更换数字时我会删除该部分并离开c.Address <> firstAddress
另一方面,如果您不改变价值观并且只是寻找它们,那么您需要包含Loop While Not c Is Nothing
以阻止它陷入无限循环。