
VBA関数 59回
エクセルで文字列を扱うときに、その文字列の中に特定の文字が入っているかどうか、またその文字は何文字目にあるのかということを知りたい場合があります。
そのような時に役に立つのがInStr関数です。
InStr([start, ]string1, string2[, compare])
InStr関数には引数が四つありますが、最初の引数startと最後の4番目の引数compareは省略が可能です。
引数startで、開始位置を表す数を指定します。
引数string1で、対象となる文字列を指定します。
引数string2で、検索する文字列を指定します。
引数compareで、大文字と小文字を区別するか指定できます。
この場合引数startも指定します。

1. この例では検索文字列に、
「埼玉県大宮市緑区」と指定し、その中で検索したい語を「県」としています。
マクロを実行すると戻り値として3を取得します。
Sub vbfunc_Instr()
Range("D2").Value = InStr("埼玉県大宮市緑区", "県")
End Sub

2.検索したい文字列が、対象文字列内になかった場合には、エラーではなく、戻り値として0を返します。
Sub vbfunc_Instr2()
Range("D3").Value = InStr("埼玉県大宮市緑区", "都")
If InStr("埼玉県大宮市緑区", "都") = 0 Then
MsgBox "対象文字列に検索語がありません。"
End If
End Sub
