vba-excel значение <> (угловые скобки или символы больше или меньше) - PullRequest
2 голосов
/ 30 июня 2011

Я работаю с функциями поиска в VBA Excel, поэтому, когда я столкнулся с проблемами, я взял пример кода из справки, предоставленной в Excel.Я взял их код, который иллюстрирует основную функцию поиска, и вставил его в макрос.При запуске макроса я получаю «Runtime error '91'», и отладчик выделяет строку кода, содержащую угловые скобки <>.Это часть кода, которую я не могу понять.

Может кто-нибудь сказать мне, что означают эти скобки?

Sub exampleFindReplace()

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 Ответ

4 голосов
/ 30 июня 2011

Оператор <> означает c.Address Не равно firstAddress.

На языке C-стиля это будет эквивалентно c.Address != firstAddress.


Примечание: я думаю, что вы получаете ошибку 91 (переменная объекта или переменная блока не установлены), потому что строка кода Loop While Not c Is Nothing And c.Address <> firstAddress всегда будет пытаться выполнить второе условие (c.Address <> firstAddress), даже если первое ( While Not C Is Nothing) оценивается как ложное. Таким образом, вызов на c.Address вызовет исключение.

Попробуйте написать код, подобный этому, так как он не допустит этого:

Sub exampleFindReplace()

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)
        If c Is Nothing Then Exit Do
    Loop While c.Address <> firstAddress
End If
End With

End Sub
...