Excel VBA代码

时间:2016-07-26 09:58:18

标签: excel vba excel-vba

我是编写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

1 个答案:

答案 0 :(得分:2)

问题在于您正在寻找数字2并将其更改为5.一旦它改变了所有这些,它将继续在循环内从顶部进行搜索,但是{{1} }第二次将无效(因为它无法找到任何东西),当它试图评估c时会导致错误。

当您更换数字时我会删除该部分并离开c.Address <> firstAddress

另一方面,如果您不改变价值观并且只是寻找它们,那么您需要包含Loop While Not c Is Nothing以阻止它陷入无限循环。