OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:582
区分:プログラム  |  分類:VB  |  最終更新日:2014/06/20
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【VB6/VBA】指定の要素が配列に存在するか確認する
関連タグ:vb6, vba, 配列, Filter
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 180,942
VB6関連技術まとめ > 【VB6/VBA】指定の要素が配列に存在するか確認する

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() 関数は指定の文字列が含まれる要素を検索するので、必ずしも完全一致の要素というわけではないので、使用の際には注意が必要です。

関連記事
外部リンク
外部リンクはありません。
- 記事検索 -