InStr 関数
InStr([lngStart, ] strString, strSearch [, lngCmp])
ある文字列の中から指定された文字列を検索し、最初に見つかった文字位置を返す文字列処理関数です。
引数
- lngStart
- 省略可能です。
検索の開始位置を設定する数式を指定します。(省略した場合は先頭の文字から検索します)
Null値が含まれると、エラーになります。 - strString
- 検索先の文字列を指定します。
- strSearch
- 検索する文字列を指定します。
- lngCmp
- 省略可能です。
文字列比較のモードを指定します。(省略した場合はバイナリモードで比較を行います)
指定した場合は、引数 lngStart も必ず指定しなければなりません。定数 値 内容 vbBinaryCompare 0 バイナリ モードで比較を行います。 vbTextCompare 1 テキスト モードで比較を行います。
戻り値
-
条件 戻り値 strString が長さ 0 の文字列("")のとき 0 strString が Null 値のとき Null 値 strSearch が長さ 0 の文字列("")のとき lngStart strSearch が Null 値のとき Null 値 strSearch が見つからないとき 0 strSearch が見つかったとき 文字列が見つかった位置 lngStartの値が strSearch の文字数より大きいとき 0
使用例
次のコードは、InStr 関数を使って文字列を検索する例です。
Dim lngPos Dim strString Dim strSearch strString = "XXpXXpXXPXXP" '検索対象の文字列 strSearch = "P" '"P" を検索します '4 番目の文字からテキストモードで比較を行います。6 を返します。 lngPos = InStr(4, strString, strSearch, 1) '1 番目の文字からバイナリモードで比較を行います。9 を返します。 lngPos = InStr(1, strString, strSearch, 0) '既定ではバイナリモードで比較を行います (最後の引数は、省略されます)。9 を返します。 lngPos = InStr(strString, strSearch) '1 番目の文字からバイナリモードで比較を行います。"W" はないので、0 を返します。 lngPos = InStr(1, strString, "W") If InStr(strString, strSearch) > 0 Then '文字列の中に"P"の文字があればここの処理が行われます。 End If
備考
文字列をバイトデータとして扱う場合は、InStrB 関数を使用します。InStrB 関数は検索結果をバイト位置 (先頭からその位置までのバイト数) で返します。
Dim lngPos lngPos = InStr("XXpXXpXXPXXP", "P") ' 9 を返します。 lngPos = InStrB("XXpXXpXXPXXP", "P") ' 18 を返します。