VBA で文字列がサブストリングを含むかどうかをチェックする
Glen Alfaro
2023年1月30日
-
Instr()
関数を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する -
InstrRev()
関数を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する -
Like
演算子を使用して、メイン文字列にサブ文字列が含まれているかどうかを確認する
この記事では、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