この記事では、【Excel】VBAマクロで配列の存在チェック(完全一致や部分一致)する方法【InStr関数、For Eachループ】について解説していきます。ポイントとしては、InStr関数とFor Eachループを使用することです。
特に初心者の方にも理解しやすいように、変数名を少し変わった日本語ローマ字表記にしています。実際の使用時には、より適切な英語表記の変数名に変更してご利用ください。
それでは、手順を詳しく見ていきましょう!
VBAマクロで配列の存在チェック(完全一致)する方法【ココア、カカオ、ライスのリスト】
それではまず、配列の存在チェック(完全一致)する方法について解説していきます。この方法では、特定のリスト内で特定の文字列が完全に一致するかどうかを確認します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckArrayCompleteMatch()
Dim shokuhinList As Variant
shokuhinList = Array("ココア", "カカオ", "ライス")
Dim item As Variant
Dim targetItem As String
targetItem = "カカオ"
For Each item In shokuhinList
If item = targetItem Then
MsgBox targetItem & " はリスト内に存在します。"
Exit Sub
End If
Next item
MsgBox targetItem & " はリスト内に存在しません。"
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckArrayCompleteMatch関数を実行します。
このコードでは、`shokuhinList` という配列に「ココア」、「カカオ」、「ライス」という要素を設定し、`targetItem` にチェックしたい項目を指定しています。
`For Each` ループを使って配列の各要素と `targetItem` を比較し、一致すればメッセージボックスで結果を表示します。
VBAマクロで配列の存在チェック(部分一致)する方法【チョコ、マシュマロ、サラダのリスト】
続いては、配列の存在チェック(部分一致)する方法について解説していきます。こちらでは、要素の一部が指定した文字列に一致するかどうかを確認します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckArrayPartialMatch()
Dim sweetsList As Variant
sweetsList = Array("チョコ", "マシュマロ", "サラダ")
Dim item As Variant
Dim targetString As String
targetString = "チョ"
For Each item In sweetsList
If InStr(item, targetString) > 0 Then
MsgBox "リスト内に " & targetString & " を含む要素が存在します。"
Exit Sub
End If
Next item
MsgBox "リスト内に " & targetString & " を含む要素は存在しません。"
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckArrayPartialMatch関数を実行します。
このコードでは、`sweetsList` という配列に「チョコ」、「マシュマロ」、「サラダ」という要素を設定し、`targetString` に部分一致させたい文字列を設定しています。
ここで `InStr` 関数を使って、配列の各要素内に `targetString` が含まれているかをチェックし、含まれていればメッセージボックスで結果を表示します。
VBAマクロで配列の存在チェック(単語の完全一致、全体の部分一致)する方法【チョコ、マシュマロ、サラダのリスト】
続いては、単語が完全一致し、全体としては部分一致する要素が配列内に存在するかどうかをチェックする方法について解説していきます。
特定の単語が配列内のいずれかの要素に含まれているかを判断します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub CheckArrayPartialMatchWithCompleteWord()
Dim sweetsList As Variant
sweetsList = Array("チョコ", "マシュマロ", "サラダ")
Dim item As Variant
Dim targetWords As Variant
targetWords = Array("チョコ", "カカオ")
Dim found As Boolean
found = False
For Each item In sweetsList
For Each targetWord In targetWords
If item = targetWord Then
found = True
Exit For
End If
Next targetWord
If found Then Exit For
Next item
If found Then
MsgBox "指定した単語はリスト内のいずれかの要素に含まれています。"
Else
MsgBox "指定した単語はリスト内のどの要素にも含まれていません。"
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でCheckArrayPartialMatchWithCompleteWord関数を実行します。
このコードでは、`sweetsList` という配列に「チョコ」、「マシュマロ」、「サラダ」という要素を設定し、`targetWords` にチェックしたい単語のリストを設定しています。
2つの `For Each` ループを使用し、`sweetsList` の各要素が `targetWords` のいずれかの単語と完全に一致するかをチェックしています。
一致する単語が見つかった場合、メッセージボックスで結果を表示します。
まとめ VBAマクロで配列の存在確認(完全一致や部分一致)する方法【InStr関数、For Eachループ】
この記事では、VBAマクロで配列の存在チェック(完全一致や部分一致)する方法【InStr関数、For Eachループ】を解説しました。
マクロをマスターしてさらに快適に過ごしていきましょう!