VBAでLike演算子の否定の書き方(含まれない検索)
VBAでLike演算子の否定の書き方(含まれない検索)

VBAでLike演算子の否定の書き方(含まれない検索)

Not a Like bがLike否定の正しい構文

Notを付ける場所が分からない。VBAあるあるです。

「a Not Like b」だっけ?

「a Like Not b」だっけ?

「a Like Is Not b」だっけ?

正解は「Not a Like b」です。

それを踏まえて、以下では通常のLike検索と、Like否定検索について説明します。

指定文字列が含まれるか検索(Like)

ある文字列の中に、指定した文字列が含まれるかを調べる場合は、Like演算子を使って判定できます。

検索したい文字列は2文字以上設定可能です。

以下のコードは、配列に格納された各文字列の中で、指定文字を含む場合はMatch、含まない場合はUnMatchを出力します。

Visual Basic Sub LikeTest1() Dim s Dim ar() ReDim ar(4) ar(0) = "大学" ar(1) = "高校" ar(2) = "中学校" ar(3) = "小学校" ar(4) = "幼稚園" For Each s In ar If s Like "*学校*" Then Debug.Print s & " 学校を含む" Else Debug.Print s & " 学校を含まない" End If Next End Sub 12345678910111213141516171819 Sub LikeTest1()    Dim s    Dim ar()        ReDim ar(4)    ar(0) = "大学"    ar(1) = "高校"    ar(2) = "中学校"    ar(3) = "小学校"    ar(4) = "幼稚園"        For Each s In ar        If s Like "*学校*" Then            Debug.Print s & " 学校を含む"        Else            Debug.Print s & " 学校を含まない"        End If    NextEnd Sub

実行結果

大学 学校を含まない 高校 学校を含まない 中学校 学校を含む 小学校 学校を含む 幼稚園 学校を含まない

指定文字列が含まれないか検索(Likeの否定)

指定文字列が含まれないことを検索する場合は、含む場合の条件にNotを付けて、結果を反転させます

Notを付けるときにどこに付ければいいのかを忘れがちですが、構文を考えると理屈としてどこに付ければよいのかを覚えられます。

Like演算子は「a Like b」の構文で書いて、判定結果としてTrueかFalseを返します。

Notを付けるのはTrueとFalseを反転させることになるため、Like演算子の構文にNotを付けて「Not」+「a Like b」とします。

Visual Basic Sub LikeTest2() Dim s Dim ar() ReDim ar(4) ar(0) = "大学" ar(1) = "高校" ar(2) = "中学校" ar(3) = "小学校" ar(4) = "幼稚園" For Each s In ar If Not s Like "*学校*" Then Debug.Print s & " 学校を含まない" Else Debug.Print s & " 学校を含む" End If Next End Sub 12345678910111213141516171819 Sub LikeTest2()    Dim s    Dim ar()        ReDim ar(4)    ar(0) = "大学"    ar(1) = "高校"    ar(2) = "中学校"    ar(3) = "小学校"    ar(4) = "幼稚園"        For Each s In ar        If Not s Like "*学校*" Then            Debug.Print s & " 学校を含まない"        Else            Debug.Print s & " 学校を含む"        End If    NextEnd Sub

実行結果

大学 学校を含まない 高校 学校を含まない 中学校 学校を含む 小学校 学校を含む 幼稚園 学校を含まない

関連記事
📎📎📎📎📎📎📎📎📎📎
BOT