InStr 関数はある文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返します。
InStr関数の使用方法
引数名 | 省略 | 説明 |
---|---|---|
Start | ○ | 文字列の検索を開始する位置を指定します。 省略した場合は、文字列の先頭から検索が開始されます。引数 Compare を指定した場合は、Start も指定する必要があります。 |
String1 | × | 検索対象となる文字列式を指定します。 |
String2 | × | 引数 String1 内で検索する文字列式を指定します。 |
Compare | ○ | 文字列比較の比較モードを指定する数値を設定します。 引数 Compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。 |
定数 | 値 | 説明 |
---|---|---|
vbUseCompareOption | -1 | Option Compare ステートメントの設定を使用して比較を行います。 |
vbBinaryCompare | 0 | バイナリ モードで比較を行います。 |
vbTextCompare | 1 | テキスト モード(大文字/小文字、全角/半角 区別なし)で比較を行います。 |
InStr関数の使用例
パラメータを変えて検索
同一の文字列に対して、パラメータをいくつか変更して検索する例です。変更したパラメータにより検索結果がかわってくるのがわかると思います。
Sub sample_ef028_01()
Dim wStr As String
wStr = "ABCDEabcdeabcdeABCDE"
Debug.Print "文字列:" & wStr
'[1]:文字列の先頭から「ABC」を検索
Debug.Print "検索結果[1]:" & InStr(wStr, "ABC")
'[2]:2文字目から「ABC」を検索
Debug.Print "検索結果[2]:" & InStr(2, wStr, "ABC")
'[3]:テキストモード(大文字・小文字・半角・全角区別なし)で検索
Debug.Print "検索結果[3]:" & InStr(2, wStr, "ABC", vbTextCompare)
End Sub
文字列内のキーワードを検索
ある文字列において特定キーワードの出現回数をループ処理でカウントする例です。
Sub sample_ef028_02()
Dim wStr As String
Dim wFind As String
Dim wPos As Integer
Dim wCount As Integer
wStr = "ABCDEabcdeabcdeABCDE"
wFind = "ABC" '検索対象文字列
wPos = 1
wCount = 0 '明示的に初期化
Do
wPos = InStr(wPos, wStr, wFind)
'検索対象文字列が見つからない場合はループを抜ける
If wPos = 0 Then Exit Do
'カウントアップ
wCount = wCount + 1
'次の検索のために検索開始位置を算出
wPos = wPos + Len(wFind)
Loop Until wPos > Len(wStr)
Debug.Print "文字列 :" & wStr
Debug.Print "検索文字列:" & wFind
Debug.Print "出現回数 :" & wCount
End Sub