InStr関数

InStr 関数はある文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返します。

スポンサーリンク

InStr関数の使用方法

構文
InStr([Start ,] String1, String2 [, Compare])

【戻り値】 バリアント型 (内部処理形式 Long の Variant)
引数名 省略 説明
Start 文字列の検索を開始する位置を指定します。 省略した場合は、文字列の先頭から検索が開始されます。引数 Compare を指定した場合は、Start も指定する必要があります。
String1 × 検索対象となる文字列式を指定します。
String2 × 引数 String1 内で検索する文字列式を指定します。
Compare 文字列比較の比較モードを指定する数値を設定します。 引数 Compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。
引数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

 Do…Loop Len,LenB関数

タイトルとURLをコピーしました