真的很困惑为什么其中一个有效而另一个无效(简单的findNext)

我不会说我是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参数的查找。

如果有人可以向我解释这一点,将不胜感激。谢谢!

dongshaobo 回答:真的很困惑为什么其中一个有效而另一个无效(简单的findNext)

感谢@Rory提供解决方案。

我必须从.find("b")行中删除Set sinepRng = Range("A1:A14").Find("b").FindNext(sinepRng)

本文链接:https://www.f2er.com/3150867.html

大家都在问