HOWTO · VBA

VBA で文字列がサブストリングを含むかどうかをチェックする

このチュートリアルでは、文字列に VBA に別の文字列が含まれている場合にブール値を返す方法を示します。

このページの内容

この記事では、Instr() 関数、InstrRev() 関数、および Like 関数を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する方法について説明します。

Instr() 関数を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する

Instr() 関数の構文:

InStr([ start ], string1, string2, [ compare ])

戻り値のタイプ:整数

パラメーター:

[ start ] オプション。検索を開始する数値。
[ start ] 引数の場合、対応する値は次のとおりです。
1-[Default]検索はメイン文字列の先頭から開始されます< br />n-検索は n の位置から始まります。
string1 必須。検索する文字列(メイン文字列)
string2 必須。検索する文字列。
[ compare ] オプション。使用する文字列比較方法を指定します。
[ compare ] 引数の場合、対応する値は次のとおりです。
0-[デフォルト]バイナリ比較方法(大文字と小文字を区別)
1-テキスト比較方法(大文字と小文字を区別しない)

以下のコードブロックは、Instr() 関数を使用して、VBA のメイン文字列にサブ文字列が含まれているかどうかを確認します。

Function IsSubstring(pos as Integer, mainStr as String, subStr as String,compTyp as Integer) as boolean
    'if `Instr()` function returned 0 then the substring is not present in the main string.
    'If `Instr()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If Instr(pos,mainStr,subStr,compTyp) >0 Then
        IsSubstring = true
        Else: IsSubstring = false
    End if
End Function
Sub test1()
    Debug.print IsSubstring(1,"ABCDE","C",1)
End Sub
Sub test2()
    Debug.print IsSubstring(1,"ABCDE","F",1)
End Sub
Sub test3()
    Debug.print IsSubstring(1,"ABCDE","c",0)
End Sub

出力 test1:

True

出力 test2:

False

出力 test3:

False

以下のコードブロックは、Instr() 関数を使用してメイン文字列からサブ文字列の位置を返します。

Function GetPosition(pos as Integer, mainStr as String, subStr as String,compTyp as Integer)
    'Check first if the substring is in the main string.
     If InStr(pos, mainStr, subStr, compTyp) > 0 Then
        'if substring is in the main string then get the position of the substring in the main string.
       GetPosition = InStr(1, mainStr, subStr, 1)
       Else: GetPosition = ("Subtring is not in the main string.")
   End If
End Function
Sub test1()
    'Check if `C` is in `ABCDE` starting at the first letter (A), case insensitive.
    Debug.Print GetPosition(1,"ABCDE", "C",1)
End Sub
Sub test2()
    'Check if `c` is in `ABCDE` starting at the first letter of the main string, case sensitive.
    Debug.Print GetPosition(1,"ABCDE", "c",0)
End Sub
Sub test3()
    'Check if `c` is in `ABCDE` starting at the fourth letter of the main string, case sensitive.
    Debug.Print GetPosition(4,"ABCDE", "c",0)
End Sub

出力 test1:

3

出力 test2:

Subtring is not in the main string.

出力 test3:

Subtring is not in the main string.

InstrRev() 関数を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する

InstrRev() 関数の構文:

InStrRev(string1, string2,[ start ], [ compare ])

戻り値のタイプ:整数

パラメーター:

string1 必須。検索する文字列(メイン文字列)
string2 必須。検索する文字列。

以下のコードブロックは、InstrRev() 関数を使用して、VBA のメイン文字列にサブ文字列が含まれているかどうかを確認します。

Function IsSubstring(mainStr As String, subStr As String) As Boolean
    'if `InstrRev()` function returned 0 then the substring is not present in the main string.
    'If `InstrRev()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If InStrRev(mainStr, subStr) > 0 Then
        IsSubstring = True
        Else: IsSubstring = False
    End If
End Function
Sub test1()
    Debug.Print IsSubstring("ABCDE", "C")
End Sub
Sub test2()
    Debug.Print IsSubstring("ABCDE", "F")
End Sub

出力 test1:

True

出力 test2:

False

Like 演算子を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する

Like 演算子の構文:

res = string Like pattern

戻り値:ブール値

パラメーター:

res 必須。ブール値の戻り値
string 必須。調べる文字列
pattern 必須。探す文字列。詳細については、備考を参照してください

備考:

? 任意の 1 文字
* 任意の 0 から多数の文字
# 任意の単一の番号(0 から 9)

以下のコードブロックは、Like 演算子を使用してサブストリングが VBA のメインストリングにあるかどうかをチェックします

Function IsSubString(mainStr as String,subStr as String) as Boolean
    'Check if subStr is in the main string by using *
   If mainStr Like "*" & subStr & "*" Then
        IsSubString = True
        Else: IsSubstring= False
   End If
End Function
Sub test1()
    Debug.print (IsSubString("ABCDE","C"))
End Sub
Sub test2()
    Debug.print (IsSubString("ABCDE","c"))
End Sub
Sub test3()
    Debug.print (IsSubString("ABCDE","F"))
End Sub

出力 test1:

True

出力 test2:

False

出力 test3:

False