【VBA】文字列を含むか判定する方法(Instr関数)

【VBA】文字列を含むか判定する方法(Instr関数)

今回はVBAで特定の文字列を含むか判定する方法を紹介します。

Instr関数を使って文字列を含むか判定する

VBAではInstr関数を使って文字列を含むか判定できます。

Sub InstrSample1()
    Const str As String = "アイウエオ"
    If InStr(str, "ア") > 0 Then MsgBox "strはアを含む"
End Sub

上のプログラムのように、InStr > 0と比較することで「特定の文字列」を含むかを判定することができます。

上のサンプルコードでは"アイウエオ"の中に"ア"が含むかを判定しています。

Instr関数は「ある文字列」の中に「特定の文字列」が、最初に現れる位置を返します。

そして、「特定の文字列」がない場合は0を返します。

この性質を利用して、特定の文字列を含んでいるかを判定しています。(特定の文字列を含むと0より大きな数字になる)

比較モードで大文字・半角・カタカナの区別なしが可能

Sub InstrSample2()
    Const str As String = "アイウエオ"
    
    '「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する(デフォルト値)
    If InStr(1, str, "あ", vbBinaryCompare) > 0 Then
        MsgBox "vbBinaryCompare"
    End If
    
    '区別しない。
    If InStr(1, str, "あ", vbTextCompare) > 0 Then
        MsgBox "vbTextCompare"
    End If
End Sub

Instr関数には比較モードというものがあり、これを設定すると「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を同じだと判定することができます。

大文字と小文字を同じと判定したい、半角と全角を同じとしたい、という場合にはこの比較モードを利用してみてください。

InStr(開始位置, 検索元, 検索ワード, 比較モード)

比較モードを使うときには、Instr関数の4つの引数をすべて指定する必要があります。

全文字で判定したい場合は開始位置は1にして、比較モードにはvbTextCompareを入れてください。

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/08/08 12:24:02時点 Amazon調べ-詳細)

《マクロ作成に困ったら》
自分で作るのが難しいと感じたら、プロに作ってもらう手もあります。
マクロ(VBA)の依頼におすすめのプログラマーを紹介の記事をご覧ください。

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい