Цикл по поиску и маркировке цветом не останавливается - не уверен почему - PullRequest
2 голосов
/ 23 июня 2019

У меня есть простой кусок кода - когда я запускаю его отдельно, он работает и заканчивается нормально, однако, когда я запускаю его вместе с каким-то другим кодом (они не ссылаются друг на друга в любой точке), макрос все еще работаетна заднем плане - из того, что я вижу на экране, происходит сбой в этой задаче - не уверен, почему, какие-либо советы для новичка?

With Worksheets(1).Range("a1:a500")
    Set c = .Find("Urgent", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address            
    Do          
        c.Interior.Color = RGB(255, 0, 0)
        Set c = .FindNext(c)
        Loop While Not c Is Nothing
    End If
End With

1 Ответ

1 голос
/ 23 июня 2019

Условие Do-Loop должно быть таким: Loop While c.Address <> firstAddress

В противном случае .FindNext(c) начнет повторять ячейки, которые уже прошли через:

Sub Test()
    Dim c as Range
    Dim firstAddress as String

    With Worksheets(1).Range("A1:A500")            
        Set c = .Find("Urgent", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Interior.Color = RGB(255, 0, 0)
                Set c = .FindNext(c)
            Loop While c.Address <> firstAddress
        End If
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...