excelvba代码

excelvba代码,vba,excel,Vba,Excel,我刚开始编写VBA代码,并且在网上遇到了下面的代码,这与我正在尝试做的非常相似。但是,当我尝试运行它时,它会突出显示行循环,而非c为Nothing和c.Address firstAddress,并弹出一条消息,说“未设置对象变量或带块变量” 有人知道如何解决这个问题吗?非常感谢您的帮助 Sub Commodity() ' ' Commodity Macro ' Commodity ' ' With Worksheets(1).Range("a1:a500") Set c = .Find(

我刚开始编写VBA代码,并且在网上遇到了下面的代码,这与我正在尝试做的非常相似。但是,当我尝试运行它时,它会突出显示行
循环,而非c为Nothing和c.Address firstAddress
,并弹出一条消息,说“未设置对象变量或带块变量”

有人知道如何解决这个问题吗?非常感谢您的帮助

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)。范围(“a1:a500”)
Set c=.Find(2,LookIn:=xlValues)
如果不是,那么c什么都不是
firstAddress=c.地址
做
c、 值=5
集合c=.FindNext(c)
循环而不是c为Nothing,c.Address为firstAddress
如果结束
以
端接头

问题在于,您正在查找数字2并将其更改为5。一旦它改变了所有这些,它将继续在循环中从顶部再次搜索,但在第二次搜索时,
c
将等于零(因为它找不到任何东西),这导致它在尝试计算
c.Address firstAddress
时出错

当您替换图形时,我会删除该部分,只留下
循环,而不是c什么都不是


另一方面,如果您不更改值而只是查找它们,则需要包含
c.Address firstAddress
,以防止它陷入无休止的循环。

问题在于,您正在查找数字2并将其更改为5。一旦它改变了所有这些,它将继续在循环中从顶部再次搜索,但在第二次搜索时,
c
将等于零(因为它找不到任何东西),这导致它在尝试计算
c.Address firstAddress
时出错

当您替换图形时,我会删除该部分,只留下
循环,而不是c什么都不是


另一方面,如果您不更改值,只是查找它们,则需要包含
c.Address firstAddress
,以防止它陷入无休止的循环。

!感谢您快速、有益的回复:)太棒了!感谢您快速、有益的回复:)