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
「今年も花粉の季節になりました」の文字列の中から「花粉」が何文字目にあるかメッセージで表示します。
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
「今年も花粉の(改行)季節になりました」の文字列の中から「改行」が何文字目にあるかメッセージで表示します。
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
構文
ある文字列が別の文字列の中で最初に現れる位置(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は、ある文字列が別の文字列内で最初に発生する文字位置を返すのではなく、バイト位置を返します。
こんな記事も書いています