Excel VBA 特定の文字が何文字目にあるか調べる-InStr関数

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

下図はExcel2016です。

VBAinstr

 

< スポンサーリンク >

 

構文

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

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

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

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

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

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

 

戻り値

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

 

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

 

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

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

 

< スポンサーリンク >



サブコンテンツ

このページの先頭へ