InStrRev関数 後方から文字列検索
InStr関数を別ページで紹介しましたが、これを踏まえて、同じようなInStrRev 関数も見ていきましょう。
InStrRev関数は、検索文字列の後ろから検索して見つかった位置を返します。
InStrRev関数の構文
InstrRev(stringcheck, stringmatch, [ start, [ compare ]])
stringcheck
検索する文字列を指定します。
stringmatch
検索したい文字列を指定します。
start(省略可)
検索を開始する位置を指定できます。
引数を省略した場合は、-1となり検索文字の最後から検索するようになります。

compare(省略可)
「vbBinaryCompare」全角半角、大文字小文字を区別するモードと、
「vbTextCompare」全角半角、大文字小文字を区別しないモードを指定できます。
省略すると、「vbBinaryCompare」全角半角、大文字小文字を区別するモードとなります。
※startを省略して、compareを指定することはできません。
※string1、string2がNullの時、戻り値はNULLを返します。
戻り値
戻り値が示す数値は、InStr関数と同じく前から数えた値となります。
(後ろから数えた値ではありません。)
検索文字列が無かった場合は0が返ります。
InStrRev関数の注意点
- 引数の並び startが第3引数になります。(InStr関数と異なります。)
- startを -1 とすると最後から検索しますが、-2などは使えません。
- 戻り値は、最初から数えた数になります。(InStr関数と同じです。)
- startに正の数を指定した場合、その数から前方に検索します。
InStrRev関数のサンプルコード
検索文字列と検索したい文字列の2つを引数として指定した場合は、後ろから検索して見つかった位置を返します。戻り値は、前から数えた値です。
Sub InStrRevTestCode02()
Dim result
Dim myStr As String
Dim myKey As String
myStr = "ABCDABC"
myKey = "C"
result = InStrRev(myStr, myKey, 5)
Debug.Print result '3
End Sub
3つの引数を指定した場合、指定の数値(5)の位置から前方に検索して見つかった位置を返します。
InStrRev関数の使いどころ
InStrRev関数は、後ろから検索してくれるという特徴を活かし、ファイルの拡張子を特定する場合などに用いると便利かもしれません。