InStrRev 関数
InStrRev(strString, strSearch [, lngStart, lngCmp])
ある文字列の中から指定された文字列を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です。
引数
- strString
- 検索先の文字列を指定します。
- strSearch
- 検索する文字列を指定します。
- lngStart
- 省略可能です。
検索の開始位置を設定する数式を指定します。(省略した場合は最後の文字位置から検索を開始します)
Null値が含まれると、エラーになります。 - lngCmp
- 省略可能です。
文字列比較のモードを指定します。(省略した場合はバイナリモードで比較を行います)定数 値 内容 vbBinaryCompare 0 バイナリ モードで比較を行います。 vbTextCompare 1 テキスト モードで比較を行います。
戻り値
-
条件 戻り値 strString が長さ 0 の文字列("")のとき 0 strString が Null 値のとき Null 値 strSearch が長さ 0 の文字列("")のとき lngStart strSearch が Null 値のとき Null 値 strSearch が見つからないとき 0 strSearch が見つかったとき 文字列が見つかった位置 lngStartの値が strSearch の文字数より大きいとき 0
使用例
次のコードは、InStrRev 関数を使って文字列を検索する例です。
Dim lngPos Dim strString Dim strSearch strString = "XXpXXpXXPXXP" '検索対象の文字列 strSearch = "P" '"P" を検索します '先頭から10番目の文字から先頭に向かって、バイナリモードで比較を行います。 '先頭からの位置 9 を返します。 lngPos = InstrRev(strString, strSearch, 10, 0) '最後の文字から先頭に向かって、テキストモードで比較を行います。 '先頭からの位置 12 を返します。 lngPos = InstrRev(strString, strSearch, -1, 1) '既定ではバイナリ モードで比較を行います。 '8番目より前に "P" はないので、0 を返します。 lngPos = InstrRev(strString, strSearch, 8)
次次のコードは、InStrRev 関数を使ってファイル名から拡張子を取り出す例です。
Dim strString Dim strFile strFile = "sample.txt.txt" 'ドットが2つ以上ある場合もある strString = Mid(strFile, InstrRev(strFile, ".") + 1) '"txt" を返します。
備考
InStrRev 関数は InStr 関数と構文が異なりますので注意してください。