ExcelのVBAで、指定した文字が配列の要素の中に存在するかを確認する方法について、シート名の配列で実施するサンプルです。
事例として、選択したシートの名前を配列に格納し、その配列内で指定した名前の完全一致と部分一致を確認します。
VBAサンプル
現在選択しているシートのコレクションを取得し、シートの名前を配列に格納、完全一致と部分一致を関数を使用して確認しています。
事例では、"Sheet1"という名前があるかを
Sub 指定した名前が選択したシート内に存在するか確認() Dim 選択シート As Sheets Dim シート As Object Dim i As Long Dim シート名リスト() Set 選択シート = ActiveWindow.SelectedSheets ReDim Preserve シート名リスト(選択シート.Count - 1) '配列のインデックスが 0 からなので1引いている' '配列に格納' For Each シート In 選択シート シート名リスト(i) = シート.Name i = i + 1 Next '以下、完全一致と部分一致の有無を表示するサンプルです。"Sheet1"という名前を検索しています' MsgBox "完全一致あり: " & 完全一致の確認(シート名リスト, "Sheet1") MsgBox "部分一致あり: " & 部分一致の確認(シート名リスト, "Sheet1") End Sub Function 完全一致の確認(確認するリスト As Variant, 確認テキスト As String) As Boolean Dim k As Long For k = LBound(確認するリスト) To UBound(確認するリスト) If 確認するリスト(k) = 確認テキスト Then 完全一致の確認 = True Exit Function End If Next 完全一致の確認 = False'一致がみつからなかったので' End Function Function 部分一致の確認(確認するリスト As Variant, 確認テキスト As String) As Boolean Dim 一致リスト As Variant 一致リスト = Filter(確認するリスト, 確認テキスト) If UBound(一致リスト) = -1 Then'要素がない場合は-1' 部分一致の確認 = False Else 部分一致の確認 = True End If End Function
補足説明
- ReDim Preserve の部分は、配列の要素数に応じて可変しています。配列のインデックスを「Option Base 1」で1から始めている場合は、1を引かない。
- 部分一致の確認は、InStr 関数やLike演算子でも可能ですが、VBAのFilter関数を利用した事例です。
以上、ExcelのVBAで、指定した文字が配列の要素の中に存在するかを確認する方法について、シート名の配列で実施するサンプルでした。