【機能】
ある文字列 (string1) の中から指定された文字列 (string2) を検索し、最初に見つかった文字位置を返す文字列処理関数です。
【構文】
InStr([start, ]string1, string2[, compare])
| 引数 |
内容 |
| start |
省略可能です。各検索の開始位置を設定する数式を指定します。引数 start を省略すると、先頭の文字から検索されます。引数 start に Null 値が含まれると、エラーになります。引数 compare を指定した場合は、引数 start も必ず指定します。 |
| string1 |
必ず指定します。検索先の文字列式を指定します。 |
| string2 |
必ず指定します。引数 string1 内で検索する文字列式を指定します。 |
| compare |
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。引数 compare を省略すると、バイナリ モードで比較が行われます。 |
引数 compare の設定値は次のとおりです。
| 定数 |
値 |
内容 |
| vbBinaryCompare |
0 |
バイナリ モードで比較を行います。 |
| vbTextCompare |
1 |
テキスト モードで比較を行います。 |
InStr 関数の戻り値は次のとおりです。
| 条件 |
InStr の戻り値 |
| string1 が長さ 0 の文字列 ("") のとき |
0 |
| string1 が Null 値のとき |
Null 値 |
| string2 が長さ 0 の文字列 ("") のとき |
start |
| string2 が Null 値のとき |
Null 値 |
| string2 が見つからないとき |
0 |
| string2 が string1 内で見つかったとき |
文字列が見つかった位置 |
| start の値が string2 の文字数より大きいとき |
0 |
【解説】
次のコードは、InStr 関数を使って文字列を検索する例です。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 検索対象の文字列。
SearchChar = "P" ' "P" を検索します。
MyPos = Instr(4, SearchString, SearchChar, 1) ' 4 番目の文字からテキスト モードで比較を行います。6 を返します。
MyPos = Instr(1, SearchString, SearchChar, 0) ' 1 番目の文字からバイナリ モードで比較を行います。9 を返します。
MyPos = Instr(SearchString, SearchChar) ' 既定ではバイナリ モードで比較を行います (最後の引数は、省略されます)。9 を返します。
MyPos = Instr(1, SearchString, "W") ' 1 番目の文字からバイナリ モードで比較を行います。"W" はないので、0 を返します。
メモ 文字列をバイト データとして扱う場合は、InStrB 関数を使用してください。InStrB 関数は検索結果をバイト位置 (先頭からその位置までのバイト数) で返します。
【必要条件】
バージョン 1