VBA開発

指定した文字位置を判断する(Instr関数)【VBA入門】

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

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

関数説明

instr関数の構文は以下のように記載します。

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

引数の一覧は以下です。

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

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

どういった時に使う?

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

(使い方例)

  • 半角スペースや全角スペースの位置を判断し、苗字、名前で分けてセルに格納する
  • IE操作で、HTML内のJavaScriptの解析をする為、必要な部分の位置を取得し、抜き出す
  • ファイル名と拡張子を分け、ファイル名を変更して保存する

使い方サンプル

Public Sub Call_Sample_Instr()
    Dim temp As String
    
    '■ファイル名の拡張子の位置を判断
    MsgBox InStr("C:\Sample.xlsx", ".")   '「.」は9番目
    
    '■半角空白スペースを除去
    temp = "Hello World"
    MsgBox InStr(temp, "World") 'Worldの開始位置を返す「7番目」
    
    '■大文字小文字の区別結果
    temp = "Hello World"
    MsgBox InStr(temp, "WORLD")                   'デフォルトは0を返す
    MsgBox InStr(1, temp, "WORLD", vbTextCompare) 'テキストモードだと大文字小文字は区別しない

End Sub

 

コメント

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