2012-02-15 9 views
0

私には2つの質問があります。これを回避する方向が必要です。ワイルドカードのMatchcase

1)VBAでLIKE演算子を使用しているときにMatchcaseをどのように使用しますか?以下のコードは、単語の正確な形式にのみ一致します。私は.MatchWildcards = Falseを使用しなければならないと思うが、それをどのように/どこで使うのか分からない。 例:「Texas」は検索されましたが、「texas」は考慮されていません。

2)私は「TexasRangers」ではなく「Texas」という単語を見つける必要があります。私はこれを行う方法があり、コードを変更する方法はありますか?

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 

答えて

2

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). 
+0

ありがとう@alex K.このコードに2番目のポイントを実装する方法を教えてください。上記のコードでわかるように、4回の検索があります。 P.S私はまだこれらの新しい概念を学んでいます。御時間ありがとうございます。 – User124726

+0

2番目の部分に正規表現を使用するとどうなりますか –