【VBS・VBA共通】配列の要素を完全一致で検索するサンプルプログラム

Tips
スポンサーリンク

今回はVBScriptVBA配列の要素を完全一致で検索し、存在有無の結果を返すサンプルプログラムを紹介します。
尚、VBScriptとVBAは構文がほぼ同じなので両方のサンプルコードを掲載します。
因みに、本当に簡単なプログラムでわざわざ記事にするほどでもないようなレベルのものなので、サクッとコピペして持っていってください。

【注意】Filter関数は「部分一致」のみ

VBScriptやVBAで“配列 要素 検索”といった感じで検索エンジンから検索すると、まずは「Filter関数」を紹介した記事が上位にきます。

記事内の説明をあまり読まずにそのまま実装してしまうと、「Filter関数は部分一致しか対応しておらず完全一致でのマッチングはできない」ことを知らないまま実装されてしまい、動作確認時は部分一致に気付かずにそのまま本番稼働させてしまうという悲劇が起こり得ます。

くれぐれも間違えないように注意してください。

VBScriptやVBAで配列の要素を完全一致で探すには、処理を自作するしか方法はありません。

サンプルプログラム

当項では、VBSとVBAのそれぞれのサンプルコードを紹介します。
どちらもFunctionプロシージャで作成し、引数は配列と検索対象の値。
戻り値はboolean型です。

VBScriptのサンプルプログラム

'引数で渡された配列にチェック対象の値が存在するかを判定します。
'引数1:配列
'引数2:チェック値
'戻り値:真偽 ※存在すればTrue
Function Is_ExistArray(ArrTarget,CheckValue)

    Dim i
        Is_ExistArray = False

        For i = LBound(ArrTarget) To UBound(ArrTarget)
            If ArrTarget(i) = CheckValue Then
                Is_ExistArray = True
                Exit For
            End If
        Next

End Function

 

VBAのサンプルプログラム

'引数で渡された配列にチェック対象の値が存在するかを判定します。
'引数1:配列
'引数2:チェック値
'戻り値:真偽 ※存在すればTrue
Function Is_ExistArray(ArrTarget() As Variant,CheckValue As Variant) As Boolean

    Dim i As Integer
        Is_ExistArray = False

        For i = LBound(ArrTarget) To UBound(ArrTarget)
            If ArrTarget(i) = CheckValue Then
                Is_ExistArray = True
                Exit For
            End If
        Next

End Function

 

最後に

今回は仕事で作ったちょっとした処理をついでに紹介させていただきました。
因みにVBS側は実際に実装したので動かしていますが、VBA側は動作確認をしておりません。
でも多分大丈夫です。
そんなやっつけ仕事の記事ですが、どなたかの参考になれば幸いです。

今回も読んでいただきましてありがとうございました。