最後に現れる文字列の位置を調べる
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図で見る最後のスラッシュを後ろから探す
イメージ図検索は右から、結果の位置は左から数えます。
検索対象
text = "東京/大阪/福岡"
末尾から検索
InStrRev(text, "/", -1, vbBinaryCompare)で最後の / を探す
左から6文字目
positionは6になり、最後の / の位置を表示
末尾から検索しても戻り値は先頭を1とする位置です。見つからない場合は0です。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セルは使いません。検索対象は「東京/大阪/福岡」、検索語は「/」です。
- 3
Example7049のSub内にカーソルを置き、F5キーで実行します。
- 4
最後の / は左から6文字目と表示されます。検索方向が後ろからでも、返される位置は先頭から数えた値です。