我不会说我是VBA的专业人士,但我也不会称自己为初学者。 但是我无法弄清楚为什么其中一种代码有效而另一种无效,
我想做的事情很简单-我只需要查找A1:A14范围内的值为“ b”的单元格即可。该范围内有3个这样的值。如果找到一个值,则将B2设置为“是”,然后向下方偏移一行。
我写的这段代码不起作用,因为findNext函数不起作用。
Sub sinep()
Dim sinepRng As Range
Dim rangeRover As Range
Set rangeRover = Range("B2")
Set sinepRng = Range("A1:A14").Find("b",LookIn:=xlValues)
If Not sinepRng Is Nothing Then
firstAddress = sinepRng.Address
MsgBox "first address " & firstAddress
Do
rangeRover.Value = "yes"
Set rangeRover = rangeRover.Offset(1,0)
Set sinepRng = Range("A1:A14").Find("b").FindNext(sinepRng)
MsgBox "third address " & sinepRng.Address
If sinepRng Is Nothing Then
MsgBox "isnothing"
GoTo DoneFinding
End If
Loop While sinepRng.Address <> firstAddress
End If
DoneFinding:
但是此代码确实有效。
Sub nag()
Dim rangeRover As Range
Set rangeRover = Range("B2")
With Worksheets(1).Range("a1:a500")
Set c = .Find("b",LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
rangeRover.Value = "yes"
Set rangeRover = rangeRover.Offset(1,0)
Set c = .FindNext(c)
If c Is Nothing Then
GoTo DoneFinding
End If
Loop While c.Address <> firstAddress
End If
DoneFinding:
End With
End Sub
我认为问题出在findNext之内;但是,我尝试对其进行了大量修改,但均未成功。我还尝试过使用带有After参数的查找。
如果有人可以向我解释这一点,将不胜感激。谢谢!
雷