VBAで特定文字列を含む値を検索、または判定(存在チェック)するのには、「Instr関数」と「Like演算子」を活用する2つの方法があります。
そこで、VBAによる特定文字を含む記述方法を2つの方法で解説していきます。
目次
VBAによる特定文字を含む場合の2つの検索・判定方法
VBAによる特定文字を含む場合の検索・判断チェックを行う際には2つの方法があります。
<特定文字を含む場合の検索・判定ができる2つの構文>
- Instr関数
- Like演算子
この2つの記述方法でその値を含むかどうかを判断することが可能です。
Instr関数について
それではまずInstrに構文から覚えておきましょう。
Instr関数の構文
【記述方法】
Instr (文字列 , 検索文字列)
戻り値はVariant型
引数 | 使い方 | 詳細 |
文字列(必須) | 検索したい元のデータ | |
検索文字列(必須) | 検索する文字を指定する | 「*」不要:(全あいまい検索) |
戻り値 | 該当した検索文字位置が返ります |
検索文字にワイルドカード(*)の記述は不要。全てあいまい検索ですので、その検索文字の存在を確認できるのがInstr関数です。
Instr関数の使い方
それでは、実際に記述を例にして使い方を理解していきましょう。
1 2 3 | Dim varData as Variant varData = Instr("fdravtj","a") |
「a」を検索していますので、戻り値として「varData」の変数に返ってくるのは、aの文字位置である「4」が入ってきます。
これによって、Instr関数は、「あいまい検索」であることがわかりますね。
但し、Instr関数一つで複数文字の検索はできません。複数文字の検索を行いたい場合には、Instr関数とIF文を併用しながら、存在しているかを確認していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | '==================================================== 'Instr関数のあいまい検索による判定チェック '==================================================== Dim varData as Variant Dim IntFlag as Integer IntFlag = 0 If Instr("fdravtj","a")> 0 then ’aが存在していれば、0より大きいのでIntFlagに1が入る。 IntFlag = 1 End If If Instr("fbdravtj","b")> 0 then IntFlag = 1 End If If Instr("fbdravtcj","c")> 0 then IntFlag = 1 End If |
Like演算子とは
Like演算子とは、「文字列比較において、部分一致や文字列比較を行う時に使用するのに用います。」基本的に「=」と考え方は同じですが、=のみならず、あいまい検索として利用する際に区別されます。
【Like演算子の記述方法】
If A Like B then
このように、If文で記述する「=」の部分に「Like」を記述して、「AとB」のあいまい検索を行っていきます。
【Like演算子の定義】
引数 | 使い方 | 詳細 |
文字列(必須) | A:検索したい元のデータ | |
検索文字列(必須) | B:検索する文字を指定する | 「*」が必要 |
戻り値 | なし |
Like演算子の構文
続いて、Like演算子の使い方についてみていきましょう。まずはシンプルな構文は下記のようにして使用します。
1 2 3 4 5 6 7 | Dim strData as String strData="abcde" If strData Like "a" Then Exit Sub End If |
但し、この構文では、Likeは「=」と同じ意味にしかなりません。
Likeはあいまい検索を意味するので、「ワイルドカード(*)」を使用してあいまい検索にしていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Dim strData as String strData="abcde" If strData Like "<span style="color: #ff0000;">*a*</span>" Then Exit Sub End If If strData Like "<span style="color: #ff0000;">a*</span>" Then Exit Sub End If If strData Like "<span style="color: #ff0000;">*a</span>" Then Exit Sub End If |
Like演算子の利用機能について
Like演算子の機能は少し特殊です。というのも、Like演算子で使用できる使用文字・構文があるので、合わせて覚えておくと効果的です。
記号 | 詳細 | 利用事例 | 結果 |
*(ワイルドカード) | その値を含む | *あ* | あい・しあい |
# | 数値 | [0-9] | |
? | 任意の1文字 | ||
[charlist] | charlistに指定した文字の中の1文字 | [0-9],[A-Z] | [0,1,2・・・9],[A,B,C・・・Z] |
[!charlist] | charlistに指定した文字に含まれない1文字 | [!A-X] | Y,Z |
Not Like | Likeの否定文として活用 | ||
Like演算子のその他使い方事例の紹介
Like演算子のその他使い方事例のその他の使い方の事例についてもいくつかご紹介していきましょう。
Like演算子事例1
1 2 | IF strData Like "[!東京,横浜,千葉]*" then ’横の文字列を含まない End IF |
Like演算子事例2
1 2 | If strData Not Like "[0-9]" then '数字でない End If |
Like演算子事例3
1 2 | If strData Like "[A-G]*" then 'A~Gの文字を含むもの End If |
まとめ
このように、VBAで特定文字列の検索・判定存在チェックを行う際には、Instr関数やLike演算子のどちらを利用しても間違えではありません。
Instr関数やLike演算子の機能を理解して、特定文字列の検索や制御文の作成に上手に活用していきましょう。