VBA開発

指定した文字のバイト位置を判断する(InstrB関数)【VBA入門】

InstrB関数は文字列の中から指定した文字列を先頭から検索し、検索結果を先頭からのバイト数で返します
Instr関数の場合は文字位置を返します。

違い
Instr関数
  →指定した文字列の文字位置を返却
InstrB関数 →指定した文字列のバイト位置を返却(先頭からのバイト数)

関数説明

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

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

引数の一覧は以下です。

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

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

戻り値の一覧

内容戻り値
string1 が長さ「0」の文字列0
string2 が長さ 0 の文字列(””)start
string2 が見つからない場合0
string2 が string1 内で見つかった場合見つかった文字列のバイト数
start の値が string1 の文字数を超えた場合0

基本的にはInstrB関数結果が「0」が返ってこれば、エラーだと理解しておけば問題ありません。

どういった時に使う?

文字列の中で、文字のバイト位置を調べて使います。文字数でなく、Byte数で知りたい時に使用します。
仕様を理解しないとわかりづらいため、使用頻度は高くありません。

使い方サンプル

Public Sub Call_Sample_InstrB()
    Dim temp As String
    
    MsgBox InStr("前から検索", "検索")      '4 →「検索」は4文字目
    
    MsgBox InStrB("前から検索", "検索")     '7 →「検索」は7バイト目
    
    MsgBox InStrB("あいうえおう", "う")     '5 →「う」は5バイト目
    MsgBox InStrB(6, "あいうえおう", "う")  '11→6バイト目以降の「う」は11バイト目
    '11 - 6 = 5ではない。(InstrBは先頭からのバイト数を返す)
End Sub

 

コメント

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