VBA開発

指定した文字位置を、末尾方向から判断する(InstrRev関数)【VBA入門】

InstrReV関数は文字列の中から指定した文字列を末尾から検索し、最初に発見した文字位置を返します
Instr関数の場合は、末尾ではなく先頭から検索をします。

違い
Instr関数
  →指定した文字列の先頭から検索
InstrRev関数→指定した文字列の末尾(後ろから)から検索

関数説明

InstrRev関数の構文は以下のように記載します。※基本的にはInstr関数と同様です。

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

引数の一覧は以下です。

引数定数(値)説明必須項目
start検索開始位置必須
string1検索対象となる文字列必須
string2string1内で検索する文字列必須
comparevbBinaryCompare大文字と小文字を区別する
vbTextCompare大文字と小文字を区別せず

startがNullの場合は、エラーが発生します。
compareを指定
した場合は、startも指定する必要があります。

どういった時に使う?

単独文字の位置を調べて使うということは少なく、
指定した文字の位置を判断して、その後さらに処理をする形が多いです。

またInstr関数と異なる部分は、先頭(左側)ではなく末尾(右側)から検索するだけです。
下記サンプルのように「ファイル自体のパス」「ファイル名」に分ける場合に使用する事が多いと思います。

 

使い方サンプル

Public Sub Call_Sample_InstrRev()
    Dim temp As String
    
    '■ファイル名とパス名を分ける
    MsgBox InStr("C:\test\Sample.xlsx", "\")      '左側から見て一番最初の「\」は3番目
    MsgBox InStrRev("C:\test\Sample.xlsx", "\")   '右側から見て一番最初の「\」は8番目
    
    'Instr関数やInstrRev関数の単独では「検索結果の2番目の位置取得」はできません。
    'InstrReV関数は、フォルダ名とファイル名を区分けする場合等、右側から検索する場合に有効な方法です。
    
    '■仮にInstr関数だけで表すと、スタート位置を変更する必要がある
    Dim n As Long
    n = InStr("C:\test\Sample.xlsx", "\")            '一つ目の「\」は3なので n+1=4番目から検索する
    MsgBox InStr(n + 1, "C:\test\Sample.xlsx", "\")  '左側から見て二番目の「\」は8番目
    
End Sub

 

コメント

タイトルとURLをコピーしました