Excel VBAのInStr関数は、一つの文字列内で別の文字列が最初に現れる位置を返す関数です。この関数は特に、テキスト処理や条件分岐において非常に役立ちます。
InStr関数の基本構文
【基本構文】
InStr([start], string1, string2, [compare])
- start(オプション)
検索を開始する位置。指定しない場合、文字列の最初から検索が開始されます。 - String1
検索対象の文字列。 - String2
string1内で検索する文字列。 - compare(オプション)
文字列比較の方法。指定しない場合、バイナリ比較が行われます(vbBinaryCompare)。テキスト比較を行う場合は、vbTextCompareを指定します。
InStr関数の使用例
【基本的な使用法】
"Hello World"という文字列の中で"World"が最初に現れる位置を見つける例です。
Sub Example1()
Dim position As Integer
position = InStr("Hello World", "World")
MsgBox position ' 結果は7
End Sub
【startパラメータの使用】
検索を3文字目から開始して、"World"が最初に現れる位置を見つける例です。
Sub Example2()
Dim position As Integer
position = InStr(3, "Hello World", "World")
MsgBox position ' 結果は7
End Sub
【大文字小文字を区別しない検索】
"Hello World"の中で、大文字小文字を区別せずに"world"が最初に現れる位置を見つける例です。
Sub Example3()
Dim position As Integer
position = InStr(1, "Hello World", "world", vbTextCompare)
MsgBox position ' 結果は7
End Sub
InStr関数の応用例
【文字列が含まれているかのチェック】
InStr関数は、ある文字列が別の文字列内に含まれているかどうかをチェックするのにも使えます。含まれている場合、その位置(1以上の値)を返します。含まれていない場合は、0を返します。
Sub CheckContains()
Dim text As String
text = "Excel VBA is powerful."
If InStr(text, "VBA") > 0 Then
MsgBox "Text contains 'VBA'"
Else
MsgBox "Text does not contain 'VBA'"
End If
End Sub