VB6/VBA には配列要素を検索する適当な機能がないため、配列に指定の要素が存在するか確認するには、自作で配列内をループ検索するか、あるいは Filter() 関数を使用し、その戻り値を調べることで指定要素が配列に含まれているかどうかを判断します。
Filter()関数を使用して要素の存在有無を確認する
Filter() 関数は配列から指定の文字列を含む要素を検索する関数です。検索条件に一致する要素を全て Variant 型の配列で返すので、その戻り値配列を UBound() 関数で調べることにより、指定の要素が配列に含まれているかどうかを判断します。
Dim varArray() As Variant
Dim varResult As Variant
Dim strTarget As String
'検索元の配列を作成
varArray = Array("AAA", "BBB", "CCC", "DDD")
'検索要素を指定
strTarget = "CCC"
'Filter()関数により要素を検索
varResult = Filter(varArray, strTarget)
'戻り値配列のサイズで要素の有無を判定
If UBound(varResult) <> -1 Then
Debug.Print strTarget & "は配列内に存在する"
Else
Debug.Print strTarget & "は配列内に存在しない"
End If
戻り値配列を UBound() 関数で調べた場合、要素が含まれていた場合は 0 以上の値が、要素が含まれていなかった場合は -1 が返るので、その法則を利用して要素の存在有無を判定します。上記例では、「CCC」という要素が元配列に 1 つ含まれているので、UBound() の戻り値は 0 となり、結果「CCCは配列内に存在する」と表示されます。ただし、Filter() 関数は指定の文字列が含まれる要素を検索するので、必ずしも完全一致の要素というわけではないので、使用の際には注意が必要です。