VB6・VBA関数メモ:InStrRev関数

InStrRev関数についてメモしておきます。
文字列末尾から文字列検索を行う際に使用します。

InStr関数と対になる関数のようですが、
なぜか引数の順番が違うので注意!(InStr関数の順番が悪い気がしますが…)


概要

InStrRev(stringcheck, stringmatch, [start], [compare])
機能 対象文字列(stringcheck)から検索文字列(stringmatch)を末尾から検索
戻り値 最初に見つかった文字位置
見つからなかった場合は「0」


引数

引数名説明
stringcheck 検索対象の文字列
stringmatch 検索する文字列
start (省略可)
検索の開始位置
省略時は文字列の末尾から検索
compare (省略可)
比較モードの定数


引数:定数

引数:compare
定数名説明使用例出力
vbUseCompareOption-1Option Compare ステートメントの設定を使用InStrRev("abcde", "cd", 5, vbUseCompareOption)3
vbBinaryCompare0(規定値)
バイナリモード
※大文字と小文字、半角と全角、ひらがなとカタカナを区別する
InStrRev("abcde", "cd", 5, vbBinaryCompare)3
vbTextCompare1テキストモード
※大文字と小文字、半角と全角、ひらがなとカタカナを区別しない
InStrRev("abcde", "cd", 5, vbTextCompare)3
vbDatabaseCompare2(Accessのみ)
DBに格納されている設定に基づいて比較
InStrRev("abcde", "cd", 5, vbDatabaseCompare)3


使用例

説明記述例出力
1文字目から「cd」を末尾から検索 InStrRev("abcde abcde", "cd", 11) 9
1文字目から「cd」を末尾から検索
(位置省略)
InStrRev("abcde abcde", "cd") 9
5文字目から「cd」を検索 InStrRev("abcde abcde", "cd", 5) 3
大文字・小文字を区別して検索
(検索できない例)
InStrRev("abcde", "CD", , vbBinaryCompare) 0
ひらがな・半角カタカナを区別しないで検索 InStrRev("あいうえお", "ウエ" , ,vbTextCompare) 3


応用例

説明記述例出力
検索対象文字列から全ての検索文字列の位置を取得
(末尾から検索)
Dim pos As Long

'検索対象文字列
Const TARGETSTR As String = "abcde abcde abcde"
'検索文字列
Const SEARCHSTR As String = "cd"

'検索位置初期化
pos = Len(TARGETSTR)

'ループして検索
Do
    '検索
    pos = InStrRev(TARGETSTR, SEARCHSTR, pos - 1)
    
    '検索できた場合出力
    If pos > 0 Then
        '検索結果出力
        Debug.Print pos
    End If
Loop While pos > 0
15
9
3


コメント
コメントする








    
この記事のトラックバックURL
トラックバック