#649 リストの中に指定値と同じ値があるかを調べるプロシージャ例 VBA

AccessのクエリのSQL文においては、「IN句」を利用することで、あるフィールドの値がいくつかのリスト中のいずれかに一致するレコードだけを抽出するといったことができます。

たとえば次のSQL文では、『都道府県』が「東京都」「神奈川県」「埼玉県」のいずれかであるレコードを抽出することができます。これは、ORを使った「都道府県が東京都または神奈川県または埼玉県」と同じ意味になります。

SELECT * FROM 社員マスタ WHERE 都道府県 IN ("東京都","神奈川県","埼玉県")


ここで、SQL文ではなく、VBAのプログラムにおいて同じように条件をリストに列挙して、その中に同じ値があるかどうかを判断するFunctionプロシージャの例を紹介します。

なお、SQL文のような『フィールド名  IN (値1, 値2, 値3, .....)』といった構文はVBAでは使えません。そこで、

    InList(チェックする値, 値1, 値2, 値3, .....)

のように、存在をチェックする値を第1引数に指定し、第2引数以降に任意の数の検査対象の値を列挙するスタイルとしています。

Public Function InList(varData As Variant, ParamArray avarFind() As Variant) As Boolean
'リストの中に指定値と同じ値があるかを調べる

  Dim schar As Variant

  InList = False
  For Each schar In avarFind
    If Nz(varData) = Nz(schar) Then
      InList = True
      Exit For
    End If
  Next schar

End Function


イミディエイトウィンドウでの実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved