ExcelVBA特定の文字InStr関数

Excel VBAである文字列の中に特定の文字列が何文字目にあるかを調べる記録です。

何文字目か取得するには、「InStr」を使います。

下図はExcel2016です。

< スポンサーリンク >





InStr関数を使って何文字目にあるか取得する

「あいう,えお」の文字列の中から「,」が何文字目にあるかメッセージで表示します。

Sub test()
    Dim str1 As String
    Dim str2 As String
    Dim instrNum As Long

    str1 = “あいう,えお”
    str2 = “,”

    instrNum = InStr(str1, str2)

    MsgBox str1 & vbLf _
        & “検索文字:” & str2 & vbLf _
        & instrNum & “文字目”
End Sub

VBAinstr

VBAinstr

 

「今年も花粉の季節になりました」の文字列の中から「花粉」が何文字目にあるかメッセージで表示します。

Sub test()
    Dim str1 As String
    Dim str2 As String
    Dim instrNum As Long

    str1 = “今年も花粉の季節になりました”
    str2 = “花粉”

    instrNum = InStr(str1, str2)

    MsgBox str1 & vbLf _
        & “検索文字:” & str2 & vbLf _
        & instrNum & “文字目”
End Sub

VBAinstr

VBAinstr

 

「今年も花粉の(改行)季節になりました」の文字列の中から「改行」が何文字目にあるかメッセージで表示します。

Sub test()
    Dim str1 As String
    Dim str2 As String
    Dim instrNum As Long

    str1 = “今年も花粉の” & vbLf & “季節になりました”
    str2 = vbLf

    instrNum = InStr(str1, str2)

    MsgBox str1 & vbLf _
        & “検索文字:改行” & vbLf _
        & instrNum & “文字目”
End Sub

VBAinstr

VBAinstr

 

構文

ある文字列が別の文字列の中で最初に現れる位置(Long)を返します。

InStr([Start], [String1], [String2], [Compare])

Start=省略可能。それぞれの検索の開始位置を設定する数値式。省略すると、最初の文字の位置から検索が開始されます。StartにNullが含まれる場合、エラーが発生します。Compare引数が指定されている場合は、Start引数は必要です。

String1=必須。検索元の文字列式を指定。

String2=必須。検索場所となる文字列式を指定。

Compare=省略可能。文字列比較の種類を指定。Compare引数がNullの場合、エラーが発生します。Compare引数が省略された場合、Option Compare設定は比較のタイプを決定します。ロケール固有のルールで比較するために有効なLCID(LocaleID)を指定。
※私は殆ど使ったことありません。

 

戻り値

条件戻り値
String1の長さが00
String1がNullNull
String2の長さが00
String2がNullNull
String2が見つからない0
String2がString1内で一致した一致した位置
StartがString2より大きい0

 

InStrB関数は、文字列に含まれるバイトデータと共に使用されます。InStrBは、ある文字列が別の文字列内で最初に発生する文字位置を返すのではなく、バイト位置を返します。

 

< スポンサーリンク >※広告先のお問い合わせは広告主様にお願いします