#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 イミディエイトウィンドウでの実行例: |
|||
|
Copyright © T'sWare All rights reserved |