MENU

【VBA】InStr関数の使い方を徹底解説!文字列検索を自在に操る方法

VBAで文字列を操作する際、特定の文字列が含まれているかを調べるには、InStr関数が非常に便利です。

この記事では、InStr関数の基本的な使い方から応用例まで、初心者にもわかりやすく解説します。

目次

Instr関数とは?

InStr 関数は、ある文字列内に特定の文字列が含まれているかを調べ、その位置を返します。

例えば、「Hello, World!」という文字列の中に「World」が含まれているかどうかを確認する場合に使います。

InStr関数の基本構文

InStr([開始位置], 対象文字列, 検索文字列, [比較モード])
  • 開始位置(省略可): 検索を開始する位置を指定します。省略した場合は 1 から始まります。
  • 対象文字列: 検索される文字列を指定します。
  • 検索文字列: 対象文字列の中で探す文字列を指定します。
  • 比較モード(省略可): 大文字と小文字の区別を指定します。省略した場合はバイナリ比較(大文字小文字を区別)されます。
    • vbBinaryCompare: 大文字小文字を区別して比較します。
    • vbTextCompare: 大文字小文字を区別せずに比較します。

InStr関数の基本的な使用例

以下に、InStr 関数を使って文字列を検索する基本的な例を示します。

Sub BasicInStrExample()
    Dim text As String
    Dim searchString As String
    Dim position As Long

    text = "Hello, World!"
    searchString = "World"

    ' "World"が"Hello, World!"の中で何番目にあるかを検索
    position = InStr(1, text, searchString, vbTextCompare)

    If position > 0 Then
        MsgBox "文字列 '" & searchString & "' は位置 " & position & " に見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

InStr関数の応用例

応用例1:シート内の特定の文字列を検索

次の例では、シート内のセルをループして、特定の文字列が含まれているセルを見つけます。

Sub FindStringInSheet()
    Dim searchString As String
    Dim cell As Range
    Dim found As Boolean

    searchString = "検索文字列"
    found = False

    ' シートのすべてのセルをループ
    For Each cell In ActiveSheet.UsedRange
        If InStr(1, cell.Value, searchString, vbTextCompare) > 0 Then
            cell.Interior.Color = RGB(255, 255, 0) ' 黄色でハイライト
            found = True
        End If
    Next cell

    If found Then
        MsgBox "文字列 '" & searchString & "' が見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

応用例2:大文字小文字を区別した検索

大文字と小文字を区別して検索する例です。

Sub CaseSensitiveSearch()
    Dim text As String
    Dim searchString As String
    Dim position As Long

    text = "Hello, World!"
    searchString = "world" ' 小文字の"world"

    ' 大文字小文字を区別して検索
    position = InStr(1, text, searchString, vbBinaryCompare)

    If position > 0 Then
        MsgBox "文字列 '" & searchString & "' は位置 " & position & " に見つかりました。"
    Else
        MsgBox "文字列 '" & searchString & "' は見つかりませんでした。"
    End If
End Sub

応用例3:部分一致検索

部分一致を利用して、特定の文字列が含まれるかどうかを判断する例です。以下の例では、複数のキーワードのうち1つでも含まれているかを確認します。

Sub PartialMatchSearch()
    Dim text As String
    Dim keywords As Variant
    Dim keyword As Variant
    Dim position As Long
    Dim found As Boolean

    text = "The quick brown fox jumps over the lazy dog"
    keywords = Array("quick", "slow", "lazy")

    found = False

    For Each keyword In keywords
        position = InStr(1, text, keyword, vbTextCompare)
        If position > 0 Then
            found = True
            Exit For
        End If
    Next keyword

    If found Then
        MsgBox "いずれかのキーワードが見つかりました。"
    Else
        MsgBox "キーワードは見つかりませんでした。"
    End If
End Sub

まとめ

InStr 関数は、VBAで文字列を検索する際に非常に便利なツールです。基本的な使い方から応用例までを理解することで、データの検索や操作を効率的に行えるようになります。この記事を参考にして、InStr 関数を活用してみてください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

この記事を書いた人

めんどくさがりでズボラ。
某自動車メーカーで、VBAやRPAを用いた業務効率化を行っております。

目次