指定した文字列が含まれるか判定する
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を見つけます。
対象と検索語
textは「Excel VBAで集計」、keywordは「vba」
大文字・小文字を区別せず検索
InStr(1, text, keyword, vbTextCompare)を実行
開始位置7を表示
position > 0なので「含まれています。開始位置: 7」を表示
検索語が空なら先に終了します。見つからないときの戻り値は0です。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セルは使いません。textを検索対象、keywordを検索語として確認します。
- 3
Example7047のSub内にカーソルを置き、F5キーで実行します。
- 4
「含まれています。開始位置: 7」と表示されます。vbTextCompareによりVBAとvbaを同じ文字として扱います。