InStr関数のポイント(基本)

このページでは、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. 1
  2. 2
  3. 3
  4. True

正解を見る

2

コメント