このページでは、InStr関数の基本的な使い方とVBAエキスパート試験のポイントをまとめた。
基本的な使い方
InStr関数は、文字列の中から特定の文字列を探し、見つかった位置を返す。ここでいう「位置」とは、何番目の文字か? という意味だ。
【書式】
InStr(元の文字列, 検索文字列)
次のプロシージャはInstr関数の使用例だ。文字列「Access」の中から「e」が見つかる位置を返す。
Sub Test()
MsgBox InStr("Access", "e")
End Sub
↓
検索文字列が見つからなかった場合、InStr関数は数値の0を返す。
Sub Test()
MsgBox InStr("Access", "B")
End Sub
↓
検索文字列が複数見つかる場合、その文字が最初に現れる位置を返す。
'3と表示される
Sub Test()
MsgBox InStr("Excel Access", "c")
End Sub
↓
検索文字列は1文字でなくても良い。
'2と表示される
Sub Test()
MsgBox InStr("Access", "cce")
End Sub
↓
エキスパート試験のポイント
特定の文字の有無を確認するコード
InStr関数の戻り値を見れば、文字列の中に、特定の文字があるかどうかが分かる。すでに述べたが、検索文字列が見つからなかった場合、InStr関数は数値の0を返す。このことを利用して、文字の有無を判別する。
Sub Test()
Dim str As String
str = "Access"
If InStr(str, "B") > 0 Then
MsgBox "文字Bが見つかりました"
Else
MsgBox "文字Bが見つかりませんでした"
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」が返る
InStr関数の引数について
InStr関数には、省略できる引数がいくつかある。すべての引数を書くと次のようになる。
【書式】
InStr(開始位置, 元の文字列, 検索文字列, 比較方法)
※ 太字の引数は省略可能
(これらの引数については、後日別ページで説明する予定)
練習問題
次のプロシージャを実行したところ、メッセージボックスが表示された。その表示内容として正しいものはどれか。次の中から1つ選択しなさい。
Sub Test()
MsgBox InStr("121212", "2")
End Sub
- 1
- 2
- 3
- True
正解を見る
2
コメント