サイトについて      連絡先   検索

VBA InStr 関数

はじめに

Excel VBA マクロの InStr 関数を紹介します。

InStr 関数は、文字列を検索し見つかった最初の位置を返します。

文字列を検索するときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

InStr(検索元, 検索ワード)
検索元の文字列から検索ワードが最初に見つかった位置を取得します。

InStr(開始位置, 検索元, 検索ワード, 比較モード)
指定した開始位置から検索できます。比較モードで大文字と小文字を区別するか指定できます。

引数「開始位置」省略できます。何文字目から検索するかを指定します。
引数「検索元」検索元の文字列を指定します。
引数「検索ワード」検索するキーワードを指定します。
引数「比較モード」省略できます。大文字と小文字を区別して検索するかを指定します。
戻り値の型数値型 (Long)

引数「比較モード」

単位 説明
vbBinaryCompare (既定)「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。
vbTextCompare区別しない。

解説

引数「検索ワード」が見つからなかったときは0を返します。1 文字目で見つかったときは1を返します。見つかったときは1以上の値が返ります。

引数「検索ワード」が一致するすべての位置を取得するにはループする必要があります。

引数「開始位置」を省略すると 1 文字目から検索します。

引数「開始位置」が1なら前から 1 文字目、2なら 2 文字目から検索します。

引数「開始位置」が引数「検索元」の文字数を超える値のときは0を返します。

引数「比較モード」を指定するときは必ず引数「開始位置」も指定します。

使用例


Dim l As Long
l = InStr("abcabc", "a")
Debug.Print(l) ' 1

l = InStr("abcabc", "c")
Debug.Print(l) ' 3

l = InStr(2, "abcabc", "a") ' 2 文字目から検索
Debug.Print(l) ' 4
  
l = InStr("abcabc", "ca") 
Debug.Print(l) ' 3

l = InStr("abcabc", "A")
Debug.Print(l) ' 0

l = InStr(1, "abcabc", "A", vbTextCompare) ' 大文字小文字を区別しない
Debug.Print(l) ' 1

一致するすべての文字の位置を取得する。


Dim 検索元 As String
検索元 = "ABCABCABC"

Dim 検索ワード As String
検索ワード = "A"

Dim i As Integer
i = 0

Do
    i = InStr(i + 1, 検索元, 検索ワード)
    If i > 0 Then
        Debug.Print(i) ' 1 4 7
    End If
Loop Until i = 0
  • 目次
    • 構文
    • 解説
    • 使用例