← コード一覧へ戻る
基本文字・日付

最後に現れる文字列の位置を調べる

InStrRevで後ろから検索し、最後の区切り文字が左から何文字目にあるか取得します。

実行前に確認

  • InStrとInStrRevでは引数の並びが異なります。
  • 開始位置-1は末尾から検索する指定です。見つからない場合は0を返します。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub Example7049()
    Dim text As String
    Dim position As Long

    text = "東京/大阪/福岡"
    position = InStrRev(text, "/", -1, vbBinaryCompare)
    If position > 0 Then
        MsgBox "最後の / は左から " & position & " 文字目です。"
    Else
        MsgBox "/ は見つかりません。"
    End If
End Sub

図で見る最後のスラッシュを後ろから探す

イメージ図

検索は右から、結果の位置は左から数えます。

  1. 検索対象

    text = "東京/大阪/福岡"

  2. 末尾から検索

    InStrRev(text, "/", -1, vbBinaryCompare)で最後の / を探す

  3. 左から6文字目

    positionは6になり、最後の / の位置を表示

末尾から検索しても戻り値は先頭を1とする位置です。見つからない場合は0です。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セルは使いません。検索対象は「東京/大阪/福岡」、検索語は「/」です。

  3. 3

    Example7049のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    最後の / は左から6文字目と表示されます。検索方向が後ろからでも、返される位置は先頭から数えた値です。

使っている機能の公式ドキュメント(Microsoft Learn)