在報表不含任何記錄時取消列印報表

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

預設情況下,你可以列印不包含任何紀錄的報告。 若要解決此問題,您可以使用巨集或 Microsoft Visual Basic for Applications (VBA) 程式碼來偵測報表中是否有記錄,然後取消列印作業。 本文章中的步驟會說明如何使用這兩種技巧。

您想要做什麼?

當報表不含任何記錄時,您可能會想要取消列印。 例如,若您剛開始銷售新產品,可能會有一段時間尚未有任何銷售記錄。 因此,您應該考慮到某些報表可能不包含任何詳細記錄,而 Count 函數等彙總函數可能沒有任何內容可計算。 為了妥善處理這種情況,您可以建立取消列印作業的巨集。 您也可以新增幾行精心放置的 VBA 程式碼來執行相同的動作。 VBA 是 Access 使用的程式語言。

你可以將巨集或 VBA 程式碼加入報告的 「無資料 」事件程序。 當你執行沒有紀錄的報告時,Access 會觸發「 無資料」 事件。 本文所述的巨集和 VBA 程式碼會顯示適當的訊息,並在報表不包含資料時取消列印報表。 當您將巨集或 VBA 程式碼新增至 On No Data 事件程序時,每當您開啟不含記錄的報表時,巨集或 VBA 程式碼都會執行。 當您按一下 [確定] 關閉任一警示訊息時,巨集也會關閉空白報表。 當您將巨集或 VBA 程式碼新增至報表時,當您嘗試在 [報表檢視] 或 [版面配置檢視] 中顯示報表時,系統將不會開啟空白報表,但您可以在 [設計檢視] 中開啟報表。

使用巨集取消列印

本節所述的巨集會在您嘗試列印空白報表時顯示警示訊息。 當您按一下 [確定] 關閉訊息方塊時,巨集會自動取消列印作業。 如果不包含警示訊息,則當您嘗試列印報表時看起來好像什麼都沒有發生,這可能會讓報表使用者感到困惑。

建立巨集

  1. 在 [功能窗格] 中,以滑鼠右鍵按一下您要變更的報表,然後按一下 [設計檢視]
  2. 在 [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [屬性表]
    -或-
    根據您的地區和語言設定,按兩下報表左上角或右上角的方塊。
  3. 點選 事件 標籤,在 「無資料 」屬性框中點選 建構器按鈕
    隨後會出現 [選擇建立器] 對話方塊。
  4. 按一下 [巨集建立器],然後按一下 [確定]
    巨集設計工具隨即啟動並顯示空白巨集。
  5. 在巨集設計視窗上的巨集指令下拉式清單中,從清單中選取 [MessageBox]
  6. [訊息] 方塊中,輸入警示訊息的文字。
    例如,您可以輸入下列內容:報表沒有記錄。
  7. 或者,將 [嗶嗶聲] 方塊中的引數值從 [是] 變更為 [否],然後在 [類型] 清單中,選取要顯示在警示訊息中的圖示類型。
  8. [標題] 方塊中,輸入您警示訊息的標題。
    例如,您可以輸入 [無記錄]
  9. 選取 MessageBox 巨集指令下方的巨集指令下拉式清單,然後選取 [CancelEvent]
  10. [設計] 索引標籤上,按一下 [關閉] 群組中的 [儲存]
  11. 在 [設計] 索引標籤上,按一下 [關閉] 群組中的 [關閉]。 如果出現警示訊息,詢問您是否要儲存巨集和報表屬性的變更,請按一下 [是]、關閉報表,在出現提示時儲存變更,然後繼續進行後續步驟以進行測試。

測試您的巨集

  • 在 [功能窗格] 中,以滑鼠右鍵按一下包含巨集的報表,然後按一下 [列印]。 視您選擇的選項而定,Access 會顯示警示訊息。
    當您按一下 [確定] 關閉訊息時,CancelEvent 巨集指令會停止列印作業。 因為您未指定任何其他事件 (例如開啟報表以檢視),因此報表會關閉。

頁面頂端

使用 VBA 程式碼取消列印

此處所述的 VBA 程式碼運作方式與上一節所述的巨集類似,當您開啟空白報表時,它會顯示警示訊息,然後在您關閉警示訊息時取消列印作業。

新增 VBA 程式碼

  1. 在 [功能窗格] 中,以滑鼠右鍵按一下您要變更的報表,然後按一下 [設計檢視]

    注意

    若要完成此程序,請使用不含記錄的報表。

  2. 在 [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [屬性表]
    -或-
    根據您的地區和語言設定,按兩下報表左上角或右上角的方塊。

  3. 點選 事件 標籤,在 「無資料 」屬性框中點選 建構器按鈕
    隨後會出現 [選擇建立器] 對話方塊。

  4. 按一下 [程式代碼建立器],然後按一下 [確定]
    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. 在 [功能窗格] 中,以滑鼠右鍵按一下剛才變更的報表,然後按一下 [列印]。 視您選擇的選項而定,Access 會顯示警示訊息。

Report_NoData 程序會使用 MsgBox 函數顯示 [報表沒有記錄] 訊息和 [確定] 按鈕。 當您按一下 [確定] 後,程序中的 "Cancel=True" 行會指示 Access 取消報表。 取消 是一個參數,會自動傳遞給事件程序,當事件程序完成時,Access 會自動檢查。

頁面頂端