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

VBA InStr 関数

はじめに

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

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

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

構文

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

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

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

引数「比較モード」

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

解説

1 文字目で見つかったときは 1 を返します。

検索ワードが見つからなかったときは 0 を返します。

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

開始位置が 1 なら前から 1 文字目、つまり最初の文字から検索します。

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

使用例


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", "A")
Debug.Print(l) ' 0

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

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


Dim 文字列 As String
文字列 = "ABCABCABC"

Dim 検索 As String
検索 = "C"

Dim i As Integer
i = 1

Do While i <> 0
    i = InStr(i + 1, 文字列, 検索)
    Debug.Print (i) ' 3 6 9 0
Loop