← コード一覧へ戻る
基本文字・日付

指定した文字列が含まれるか判定する

InStrの戻り値が0より大きいか調べ、部分一致の有無を判定します。

実行前に確認

  • InStrは文字位置を1から数え、見つからない場合は0を返します。
  • vbTextCompareは英字の大文字・小文字を区別しません。区別したい場合はvbBinaryCompareへ変更します。
  • 検索語が空だと見つかった扱いになるため、この例では先に除外しています。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub Example7047()
    Dim text As String
    Dim keyword As String
    Dim position As Long

    text = "Excel VBAで集計"
    keyword = "vba"
    If Len(keyword) = 0 Then
        MsgBox "検索語を指定してください。", vbExclamation
        Exit Sub
    End If
    position = InStr(1, text, keyword, vbTextCompare)
    If position > 0 Then
        MsgBox "含まれています。開始位置: " & position
    Else
        MsgBox "含まれていません。"
    End If
End Sub

図で見るVBAが含まれる位置を確認する

イメージ図

小文字の検索語vbaで、大文字のVBAを見つけます。

  1. 対象と検索語

    textは「Excel VBAで集計」、keywordは「vba」

  2. 大文字・小文字を区別せず検索

    InStr(1, text, keyword, vbTextCompare)を実行

  3. 開始位置7を表示

    position > 0なので「含まれています。開始位置: 7」を表示

検索語が空なら先に終了します。見つからないときの戻り値は0です。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セルは使いません。textを検索対象、keywordを検索語として確認します。

  3. 3

    Example7047のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    「含まれています。開始位置: 7」と表示されます。vbTextCompareによりVBAとvbaを同じ文字として扱います。

使っている機能の公式ドキュメント(Microsoft Learn)