InStrRev関数 解説(Excel VBA)

Excel VBAのInStrRev関数について

Excel VBAのInStrRev関数は、指定した文字列を逆順に検索し、特定の部分文字列が初めて出現する位置を返す関数です。文字列内で特定の部分文字列を後ろから検索したいときに便利です。

InStrRev関数の構文

InStrRev関数の基本的な構文は以下の通りです:

InStrRev(string1, string2, [start], [compare])

各パラメータの詳細は以下の通りです:

  • string1: 検索対象の文字列を指定します。
  • string2: string1内で検索する部分文字列を指定します。
  • start: 検索を開始する位置を指定します。この引数はオプションで、省略した場合は文字列の最後から検索を開始します。
  • compare: 文字列の比較方法を指定します。この引数もオプションで、省略した場合はバイナリ比較が適用されます。

InStrRev関数の使用例

以下にInStrRev関数の基本的な使用例を示します。このコードは指定したフレーズの中で特定の単語が最後に現れる位置を検索します。

Sub LastOccurrence()
    Dim Phrase As String
    Dim Word As String
    Dim Position As Integer
    
    Phrase = "VBAは強力です。VBAを学ぶのは楽しいです。VBAは素晴らしいです。"
    Word = "VBA"
    
    Position = InStrRev(Phrase, Word, -1, vbTextCompare)
    
    If Position > 0 Then
        MsgBox Word & " の最後の出現はフレーズの " & Position & " 文字目です。", vbInformation, "検索結果"
    Else
        MsgBox Word & " はフレーズに存在しません。", vbInformation, "検索結果"
    End If
End Sub

このコードでは、最初にPhraseとWordに検索対象のフレーズと検索したい単語を設定します。次にInStrRev関数を使ってWordがPhrase内で最後に出現する位置を取得し、その位置をPositionに代入します。最後に、Ifステートメントを使ってPositionが0より大きいかどうかをチェックします。Positionが0より大きければ、WordがPhrase内に存在し、その位置をメッセージボックスで表示します。Positionが0の場合、WordはPhrase内に存在しないため、その旨をメッセージボックスで表示します。