このページでは、InStr関数の基本的な使い方とVBAエキスパート試験のポイントをまとめた。
基本的な使い方
InStr関数は、文字列の中から特定の文字列を探し、見つかった位置を返す。ここでいう「位置」とは、何番目の文字か? という意味だ。
【書式】
InStr(元の文字列, 検索文字列)
次のプロシージャはInstr関数の使用例だ。文字列「Excel」の中から「x」が見つかる位置を返す。
'2と表示される
Sub Test()
MsgBox InStr("Excel", "x")
End Sub
↓
検索文字列が見つからなかった場合、InStr関数は数値の0を返す。
'0と表示される
Sub Test()
MsgBox InStr("Excel", "A")
End Sub
↓
検索文字列が複数見つかる場合、その文字が最初に現れる位置を返す。
'3と表示される
Sub Test()
MsgBox InStr("Excel Access", "c")
End Sub
↓
検索文字列は1文字でなくても良い。
'2と表示される
Sub Test()
MsgBox InStr("Excel", "xce")
End Sub
↓
エキスパート試験のポイント
特定の文字の有無を確認するコード
InStr関数の戻り値を見れば、文字列の中に、特定の文字があるかどうかが分かる。すでに述べたが、検索文字列が見つからなかった場合、InStr関数は数値の0を返す。このことを利用して、文字の有無を判別する。
Sub Test()
Dim str As String
str = "Excel"
If InStr(str, "A") > 0 Then
MsgBox "文字Aが見つかりました"
Else
MsgBox "文字Aが見つかりませんでした"
End If
End Sub
↓
特定の文字列を切り出すコード
Left関数やMid関数と組み合わせて、特定の文字列だけを切り出すことができる。次のプロシージャは、文字列「sample.csv」の中から、ピリオドの前の文字列を取り出す。
Sub Test()
Dim str As String, ret As String
str = "sample.csv"
ret = Left(str, InStr(str, ".") - 1) '①
MsgBox ret
End Sub
↓
少し分かりにくいと思うので、①行の流れを下記に示しておく。処理の流れを、頭の中で追えるようにしておこう。
Left(str, InStr(str, ".") - 1)
↓
Left("sample.csv", InStr("sample.csv", ".") - 1)
↓
Left("sample.csv", 7 - 1)
↓
Left("sample.csv", 6)
↓
文字列「sample」が返る
練習問題
次のプロシージャを実行したところ、メッセージボックスが表示された。その表示内容として正しいものはどれか。次の中から1つ選択しなさい。
Sub Test()
MsgBox InStr("121212", "2")
End Sub
- 1
- 2
- 3
- True
正解を見る
2
コメント