ACCESSのレポートを作成する際、値が0の項目が残っていると見にくい場合があると思います。
もしくは、値が0なら表示すべきでない項目など。
今回は、レポートで値が0のテキストボックスを非表示にする方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSで実際に作成したフォームやレポートを、その作成方法と共にご紹介していきます。
結論:レポートで値が0のテキストボックスを非表示にするには、セクションのフォーマット時イベントでVisibleプロパティを設定する
レポートで値が0のテキストボックスを非表示にするには、レポートを表示する際に表示/非表示を切り替えたいコントロースが属するセクションのフォーマット時イベントで、Visibleプロパティを設定します。
Visibleプロパティはレポートにあるコントロールの表示/非表示を設定するプロパティで、以下のように利用します。
表示する場合
Me!コントロール名.Visible = True
非表示の場合
Me!コントロール名.Visible = False
では、以下で具体的に作成方法を見ていきましょう。
なお、実際にファイルを触って確認したいという方にはサンプルファイルも準備しています。

完成形
最初にレポートの完成形をお見せします。
以下は請求書レポートです。

商品代金、送料、値引きの項目が表示され、その合計金額が小計になっています。
この際、値引きをしていない顧客にはそもそも値引き項目自体を見せたくない、とします。
そのため、値引きなしの場合は値引き項目自体を非表示にしています。

この機能を上記のVisibleプロパティで実現しています。
テーブル・クエリの準備
まずは上記のレポートの元となるテーブル、クエリを準備します。
テーブルは以下の売上データを作成しました。

売上データテーブルには、商品代金、送料、値引きのフィールドがありますが、小計がありません。
小計はこの3つのフィールドの合計値なので、クエリで計算します。
そこで、売上計算クエリを作成しました。
以下が、売上計算クエリをデザインビューで表示したものです。

演算フィールドとして「小計」を作成しています。
小計フィールドには以下のように記述しました。
小計: [商品代金]+[送料]+[値引き]
商品代金、送料、値引きを合計して小計を計算しています。
データシートビューで結果を見てみましょう。

小計が正しく計算されていることがわかります。
この売上計算クエリを元に、請求書レポートを作成します。
レポートの作成
次にレポートを作成します。
今回は、デザインビューで以下のように作成しました。

レポートのレコードソースは先ほど作成した売上計算クエリです。
レコードソースとは、レポートに表示するデータの元となるオブジェクトです。
レコードソースに指定したテーブルやクエリに存在するフィールドを、レポートのテキストボックスに表示可能です。

更に、レポートの詳細セクションのフォーマット時イベントにイベントプロシージャを設定しました。
イベントプロシージャの内容は後述しますが、ここで値引きテキストボックスの表示/非表示を切り替える処理を行います。
今回は、対象となる値引きテキストボックスが詳細セクションにあるため、詳細セクションのフォーマット時イベントに設定していますが、例えば顧客名の表示を切り替えたい場合は顧客名が存在するページヘッダーセクションのフォーマット時イベントで処理する必要があります。
レポート全体の開くときイベントや、レコード移動時イベントに設定してもうまく動作しませんので注意してください。
VBAプログラミング
それでは、設定したイベントプロシージャの内容を紹介します。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
If Me!値引き = 0 Then
Me!値引き.Visible = False
Else
Me!値引き.Visible = True
End If
End Sub
レポート上の値引きの値に応じて、Ifで条件分岐を行っています。
値引きが0の場合はVisibleプロパティをFalseにして非表示とし、0でない場合はVisibleプロパティをTrueにして表示しています。
ここで、Meという表現が出てきますが、Meはその時点でのアクティブなオブジェクト、この場合では処理対象となっている請求書レポートを指します。
条件分岐では0の場合と0でない場合の両方を設定して、0でない場合には正しく表示されるようにしてください。
非表示側の処理だけを作ってしまうと、表示してほしいときにも表示されないという問題の原因となります。
結論
ということで改めて結論です。
レポートで値が0のテキストボックスを非表示にするには、セクションのフォーマット時イベントでVisibleプロパティを設定してください。
レポート全体の開くときイベントや、レコード移動時イベントに設定してもうまく動作しませんので注意してください。
以上、レポートで値が0のテキストボックスを非表示にする方法をご紹介しました。
この記事の内容を実際に試したい方へ
本記事の内容を実際にACCESSを動かしながら確認したいという方向けに、記事で紹介した機能が実装されたサンプルファイルを販売しています。記事内で解説しているテーブル、クエリ、フォーム、レポート、VBAのプロシージャなどをそのまま動く形で実装しました。
学習用としてはもちろん、加工して自社業務に利用することも可能です。
ご興味のある方は以下からご覧ください。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。
