レコードが含まれないレポートの印刷をキャンセルする

既定では、レコードを含めないレポートを印刷できます。 この問題を解決するには、マクロまたは Microsoft Visual Basic for Applications (VBA) コードを使用して、レポートにレコードがないことを検出し、印刷操作を取り消します。 この記事の手順では、両方の方法について説明します。

目的に合ったトピックをクリックしてください

レポートにレコードが含まれている場合は、レポートの印刷を取り消す必要がある場合があります。 たとえば、新しい製品の販売を開始する場合、まだ販売を登録していない期間がある可能性があります。 そのため、一部のレポートに詳細レコードが含まれている可能性や 、Count 関数などの集計関数にカウントする必要が生じ得る可能性を考慮する必要があります。 このような発生を正常に処理するために、印刷ジョブをキャンセルするマクロを作成できます。 また、注意深く配置された VBA コードを数行追加して、同じ操作を実行できます。 VBA は、使用するプログラミング言語 Access です。

マクロまたは VBA コードをレポートの On No Dataイベントプロシージャに追加します。 Access を 含むレポート を実行するたびに、データなしイベントがトリガーされます。 この記事で説明するマクロと VBA コードでは、適切なメッセージが表示され、レポートにデータが含まれている場合はレポートの印刷が取り消されます。 "データなし" イベント プロシージャにマクロまたは VBA コードを追加すると、レコードが含まれるレポートを開くたびに、マクロまたは VBA コードが実行されます。 [OK] をクリックしていずれかの通知メッセージを閉じると、マクロは空白のレポートも閉じます。 マクロまたは VBA コードをレポートに追加すると、レポート ビューまたはレイアウト ビューで表示しようとしても空白のレポートは開かれませんが、デザイン ビューでレポートを開く場合があります。

マクロを使用して印刷を取り消す

このセクションで説明するマクロでは、空白のレポートを印刷しようとするときに警告メッセージが表示されます。 [OK] をクリックしてメッセージ ボックスを閉じると、マクロによって印刷操作が自動的に取り消されます。 通知メッセージを含めなかった場合は、レポートを印刷しようとして何も起こらないかのように表示されます。レポートのユーザーを混乱させる可能性があります。

マクロを作成する

  1. ナビゲーション ウィンドウで、変更するレポートを右クリックし、[デザイン ビュー] を クリックします

  2. [デザイン] タブの [表示/非表示] グループの [プロパティ シート] をクリックします。

    または

    地域と言語の設定に応じて、レポートの左上隅または右上隅にあるボックスをダブルクリックします。

  3. [イベント ] タブ をクリックし、[データ なし] プロパティ ボックスで [イベント] [ビルダー] ボタン

    [ ビルダーの選択] ダイアログ ボックスが表示されます。

  4. [マクロ ビルダー] をクリック、[OK] をクリックします

    マクロ デザイナーが起動し、空のマクロが表示されます。

  5. マクロ デザイン ウィンドウのマクロ アクションのドロップダウン リストで、一覧から MessageBox を選択します。

  6. [メッセージ ] ボックス に、通知メッセージのテキストを入力します。

    たとえば、レポートするレコードはありません

  7. 必要に応じて、[警告音] ボックスの引数の値を [はい]から[いいえ] に変更し、[種類] ボックスの一覧で、通知メッセージに表示するアイコンの種類を選択します。

  8. [タイトル ] ボックス に、通知メッセージのタイトルを入力します。

    たとえば、「レコードなし」 と入力できます

  9. MessageBoxアクションの下にあるマクロ アクションのドロップダウン リストを選択し、[CancelEvent] を選択します

  10. [デザイン] タブの [閉じる] グループで [保存] を クリックします

  11. [デザイン] タブの [閉じる] グループで [閉じる] をクリックします。 警告メッセージが表示され、マクロとレポート プロパティの変更を保存する必要がある場合は、[はい]をクリックし、レポートを閉じ、メッセージが表示されたら変更を保存し、次の手順に進んでテストします。

マクロをテストする

  • ナビゲーション ウィンドウで、マクロを含むレポートを右クリックし、[印刷] をクリック します。 選択したオプションに応じて、通知メッセージが表示されます。

    [OK] をクリックしてメッセージを閉じると、CancelEventアクションによって印刷操作が停止します。 他のイベント (表示用にレポートを開くなど) を指定しないので、レポートが閉じます。

ページの先頭へ

VBA コードを使用して印刷を取り消す

ここで説明する VBA コードは、前のセクションで説明したマクロと同様に機能します。空白のレポートを開いた場合に通知メッセージが表示され、通知メッセージを閉じると印刷操作がキャンセルされます。

VBA コードを追加する

  1. ナビゲーション ウィンドウで、変更するレポートを右クリックし、[デザイン ビュー] を クリックします

    注: この手順を完了するには、レコードが含まれるレポートを使用します。

  2. [デザイン] タブの [表示/非表示] グループの [プロパティ シート] をクリックします。

    または

    地域と言語の設定に応じて、レポートの左上隅または右上隅にあるボックスをダブルクリックします。

  3. [イベント ] タブ をクリックし、[データ なし] プロパティ ボックスで [イベント] [ビルダー] ボタン

    [ ビルダーの選択] ダイアログ ボックスが表示されます。

  4. [ コード ビルダー] をクリック、[OK] をクリックします

    このVisual Basicエディターが起動し、空のイベント プロシージャが表示されます。

  5. 完了したら、次Visual Basicコードを入力して、Report_NoData手順が次のように表示されます。

    Private Sub Report_NoData (Cancel As Integer)
    MsgBox "There are no records to report", vbExclamation, "No Records"
    Cancel = True
    End Sub
  6. 完了したら、[ファイル] をクリック し、[保存] を クリックします

  7. [ファイル ] をクリックし、[閉じて Microsoft Access に戻る] をクリックします

  8. 開いているレポートを閉じ、[は い] をクリックして保存を確定します。

  9. ナビゲーション ウィンドウで、変更したレポートを右クリックし、[印刷] をクリック します。 選択したオプションに応じて、通知メッセージが表示されます。

このReport_NoDataは、MsgBox関数を使用して、メッセージを報告するレコードと[OK]ボタンを表示します。 [OK] をクリックすると、手順の "Cancel=True" 行がレポートを取り消すよう Access に指示します。 Cancel はイベント プロシージャに自動的に渡される引数で、イベント プロシージャが完了すると常に Access によってチェックされます。

ページの先頭へ

ヘルプを表示

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×