教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでInstr関数の使い方

構文

構文は以下の通りです。

InStr([開始位置], 文字列1, 文字列2, [比較方法])

解説

InStr関数は、ある文字列の中で特定の部分を探すための関数です。開始位置(省略可能)は、文字列の中で検索を始める位置となります。文字列1は検索対象の文字列となり、文字列2は探す文字列となります。比較方法(省略可能)は、大文字と小文字を区別するかどうかを指定します。例えば、「文字列1」の中で「文字列2」が最初に見つかる位置を教えてくれます。結果は見つかった位置の番号で返され、見つからなかった場合は0が返されます。

【比較方法】

定数 内容
vbBinaryCompare 0 大文字と小文字を区別して比較します
vbTextCompare 1 大文字と小文字を区別せずに比較します

プログラミング例

具体的なプログラミング例を紹介します。

(例1)"こんにちは"の中で"にち"を探す(大文字小文字区別なし)

Sub 文字を探す()
    Dim 結果 As Integer
    結果 = InStr(1, "こんにちは", "にち", vbTextCompare)
    MsgBox "「にち」が見つかった位置: " & 結果
End Sub

上記のプログラムは、InStr(1, "こんにちは", "にち", vbTextCompare)は、「こんにちは」の1文字目から「にち」を探します。大文字小文字を区別せずに検索するため、vbTextCompareを使っています。MsgBoxで結果の位置を表示し、「にち」が最初に見つかった場所の番号を教えてくれます。もし「にち」が存在しなければ、結果は0となります。

(例2)"HELLO"の中で"LO"を探す(大文字小文字区別あり)

Sub 大文字を探す()
    Dim 結果 As Integer
    結果 = InStr(1, "HELLO", "lo", vbBinaryCompare)
    MsgBox "「lo」が見つかった位置: " & 結果
End Sub

上記のプログラムは、"HELLO"の中に"lo"は存在しないため、結果は0になります。大文字小文字を区別したいときにはvbBinaryCompareを使うのがポイントです。

まとめ

InStr関数は、指定された文字列の中で特定の部分を検索する便利な関数です。開始位置や大文字小文字の区別も指定できるため、さまざまな場面で活用できます。検索が成功した場合は位置を、失敗した場合は0を返すため、条件分岐と組み合わせて使うことも可能です。