Спичечный коробок для подстановочных знаков - PullRequest
0 голосов
/ 15 февраля 2012

У меня два вопроса. Нужно какое-то направление вокруг этого.

1) Как использовать Matchcase при использовании LIKE Operator в VBA. Приведенный ниже код соответствует только точной форме слова. Я думаю, что мне придется использовать .MatchWildcards = False, но не знаю, как / где его использовать. Например: Поиск "Техас", но это не учитывает "Техас".

2) Мне нужно только найти слово «Техас», а не «Техасские рейнджеры». Есть ли способ, которым я могу сделать это, и как я могу изменить свой код.

Sub Example()
   Dim wsh As Worksheet, i As Long, lngEndRowInv As Long
   Set wsh = ActiveSheet
   i = 2
   Lastr= wsh.Range("A" & wsh.Rows.Count).End(xlUp).Row
   While i <= Lastr
      If (Cells(i, "F") Like "*New Orleans*") And (Cells(i, "D") Like "*Belfast*") Then
           Cells(i, "C").Value = "Deleted"
           Cells(i, "C").Font.Color = vbRed
      ElseIf Not ((Cells(i, "A") Like "*Texas*") Or (Cells(i, "A") Like "*NY*")) Then
           Cells(i, "A").Value = "Not Deleted"
        End If
        i = i + 1
      Wend
End Sub

1 Ответ

2 голосов
/ 15 февраля 2012

MatchWildcards является частью объектной модели поиска / замены, поэтому она не применяется к VBA LIKE

Для чувствительности к регистру форсировать конкретный регистр;

... ucase$((Cells(i, "A")) Like "*TEXAS*"

Если вы хотите увидеть, содержит ли ячейка целое слово, и в то же время учитывать окружающий пробел (что-то, что «LIKE» не может сделать на самом деле), вы можете;

dim re: set re = CreateObject("VBScript.RegExp")
re.pattern="\bTEXAS\b"
re.ignorecase=true

if re.test(Cells(i, "A")) then 
   //cell contains "TEXAS" in any case surrounded by a word boundary (white space, start/end of line).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...