Две строки проверяют true на равные, но проверяют false для оператора Like - PullRequest
0 голосов
/ 04 ноября 2019

Почему не работает оператор "Like"?

Оператор "=" проверяется как true, а оператор "like" проверяется как false, почему?

Sub sandbox2()

Dim TagForm As String

TagForm = "tag(1###)<EX-->"

Debug.Print "Compare: " & Sheets(2).Cells(2, 2).Value & " To: " & TagForm

If Sheets(2).Cells(2, 2).Value = TagForm Then 'this works... displays message "Match!"
    MsgBox "Match!"
End If

If Sheets(2).Cells(2, 2).Value Like TagForm Then 'this does not work... Does not display "Match!"
    MsgBox "Match!"
End If

End Sub

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вы использовали Like оператор неправильно. # представляет однозначное число.

, поэтому вы можете сравнить следующее:

Sub test()
    Dim a As String, b As String, c As String
    a = "tag(1###)<EX-->"
    b = "tag(1###)<EX-->"
    c = "tag(1000)<EX-->"

    Debug.Print b = a       'true
    Debug.Print b Like a    'false

    Debug.Print c = a       'false
    Debug.Print c Like a    'trua
End Sub

Если вы сравните MyVar LIKE "tag(1###)<EX-->", тогда
MyVar может быть любым из "tag(1000)<EX-->" до "tag(1999)<EX-->"

1 голос
/ 04 ноября 2019

При использовании оператора like, # и - являются специальными символами.

Чтобы соответствовать буквальному символу #, добавьте вокруг него скобки, например [#]

См. Полную документацию здесь: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/like-operator

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