「レポートにフィルタをかけて出力|DQのアイテムデータベースをAccessで作る09」でレポートに日付指定のフィルタをかけるVBAを紹介しました。

今回はこのフィルタを少し改良して、期間指定でフィルタをかける方法を説明します。
フォームに期間指定のテキストボックスを追加
伝票日付フォームを開きます
日付がボタンで増減するかたまりごとコピーします

もともとの日付~コピーした日付のテキストボックスとなるように配置を調整します

コピーしてできたテキストボックスとボタンの名前を下の写真のように変更していきます。
コピー元と同じ名前は付けられないので、日付2等にします。

VBAの入力
VBEを起動して、日付を増減する6つのボタンのVBAを丸っとコピーします

このままだと、同じVBAが2つできてしまうので、コピーして新しく追加したほうに「2」の文字を追加していきます。
こうすることで、コピーしたVBAを日付2のVBAとして成りすますことができます。

サブフォームのクエリの抽出条件
次に日付伝票サブのクエリの条件を変更していきます

抽出条件は
Between [Forms]![伝票日付]![日付] And [Forms]![伝票日付]![日付2]
です
レポートを開くVBAのフィルタ
伝票レポートを開くためのボタンのVBAを修正していきます

伝票ボタンをクリック時のプロシージャにVBAを入力していきます

DoCmd.OpenReport “R-伝票”, acViewPreview, , “[日にち] Between #” & Forms![伝票日付]![日付] & “# AND #” & Forms![伝票日付]![日付2] & “#”
動作確認をすると、日にちの期間で伝票を抽出していることが確認できます

今回のポイントは「between A and B」の関数がクエリとVBAで表記の仕方が異なるということです。
あとVBAで日付形式を扱う時は、「#」で囲むって言う所です
コメント