はじめに
ひらちんです。
任意の文字列の中に、特定の文字列が含まれているかどうかを判定する方法を紹介します!
文字列が一致するの「=」演算子で確認出来ますが、含まれていることを判定できる演算子はないので、別の関数を使って工夫します。
InStr関数
InStr関数は、ある文字列①が別の文字列②の中で最初に現れる位置を教えてくれます。
つまり、Instr関数での返りが「0」の場合は、その文字列②の中に指定の文字列①が現れなかったということになるので、「含まれていない」ことが分かります。
逆に、「>0」の場合には、どこかで現れているので、「含まれていること」が分かります。
パーツ | 説明 |
---|---|
start | 省略可能。 それぞれの検索の開始位置を設定する数値式です。 省略すると、最初の文字の位置から検索が start されます。 start に Null が含まれる場合、エラーが発生します。 compare が指定されている場合は、start 引数が必要です。 |
string1 | 必須です。 検索元の文字列式です。 |
string2 | 必須です。 検索場所となる文字列式を指定します。 |
compare | 省略可能です。 文字列比較の種類を指定します。 compare が Null の場合、エラーが発生します。 compare が省略された場合、Option Compare 設定は比較のタイプを決定します。 ロケール固有のルールで比較するために有効な LCID (LocaleID) を指定します。 |
ここでは、文字列が含まれているかどうかだけ判定するのに使いますので、引数は「string1」と「string2」だけ使います。
分かりやすく書くと、
InStr(文字列②, 文字列①)
これで、文字列②の中に文字列①が最初に現れる位置を教えてくれます。
具体的な例
次のようなサンプルコードで試してみましょう!
文字列①と文字列②にそれぞれ、確認したい文字列と探される文字列を指定してプログラムを動かします。
Sub Sample()
Dim 文字列① As String '確認したい文字列
Dim 文字列② As String '探される文字列
文字列① = ""
文字列② = ""
If InStr(文字列②, 文字列①) > 0 Then
Debug.Print "文字列②の中に文字列①は含まれています"
Else
Debug.Print "文字列②の中に文字列①は含まれていません"
End If
End Sub
文字列①に、「ひらちん」
文字列②に、「ひらちんの部屋」
とします。
Sub Sample()
Dim 文字列① As String '確認したい文字列
Dim 文字列② As String '探される文字列
文字列① = "ひらちん"
文字列② = "ひらちんの部屋"
If InStr(文字列②, 文字列①) > 0 Then
Debug.Print "文字列②の中に文字列①は含まれています"
Else
Debug.Print "文字列②の中に文字列①は含まれていません"
End If
End Sub
実行すると「文字列②の中に文字列①は含まれています」となり、正しく判定出来ていることが分かります。
では、
文字列①に、「たろちん」
文字列②に、「ひらちんの部屋」
と修正します。
Sub Sample()
Dim 文字列① As String '確認したい文字列
Dim 文字列② As String '探される文字列
文字列① = "たろちん" 'ここ変わった
文字列② = "ひらちんの部屋"
If InStr(文字列②, 文字列①) > 0 Then
Debug.Print "文字列②の中に文字列①は含まれています"
Else
Debug.Print "文字列②の中に文字列①は含まれていません"
End If
End Sub
実行すると、今度は「文字列②の中に文字列①は含まれていません」となりました。
きちんと判定が出来ましたね(^o^)
コメント