この方法ですと、VBAで作成するので戻り値を自由に設定したり、入力してもらうことなどができるので自由度が上がります。 クエリの作成は簡単で、抽出条件にFunctionプロシージャを指定するだけです。 ここでは変数に代入したシンプルな例とInputBox関数を使用した2種類を掲載します。 関連する「クエリとVBAで先頭と全体の文字を大文字か小文字か判定し抽出する」を掲載していますので参考にしてください。 |
クエリの元になる商品一覧テーブルです。
単価フィールドから抽出するクエリを作成します。
テーブルからクエリを作成し、単価の抽出条件に >MyTanka() と入力します。
MyTanka()がVBAで作成するプロシージャ名です。
VBAで作成したMyTanka()プロシージャです。
・戻り値が抽出条件になるので、Functionプロシージャで作成します。
・これでMyTankaは50000が返ります。
Function MyTanka() As Long
MyTanka = 50000
End Function
クエリを実行した結果です。
クエリの抽出条件がVBAの戻り値の5000なので、単価が50000円を超えるレコードが表示されています。
InputBox関数で単価を入力するように変更したVBAです。
・InputBox関数はキャンセルが選択された場合、長さ0の文字列が返るので、判定しエラーを防止しています。
・IsNumericで入力値が数値かどうか判定しています。
Function MyTanka() As Long
Dim s As String
s = InputBox("単価?")
If s <> "" Then
If IsNumeric(s) Then
MyTanka = s
End If
End If
End Function
クエリを実行すると、InputBoxが表示されるので単価を入力します。
実行結果のクエリです。
VBAで入力した、単価が30000円を超えるレコードが表示されています。