【问题标题】:Difference between print and print preview events in excel vbaexcel vba中打印和打印预览事件的区别
【发布时间】:2010-11-25 03:50:54
【问题描述】:

我有一些代码可以截取 excel 中的 Before_Print 事件,以确保用户在打印工作表之前填写了所有必填字段。但是,我只希望在用户实际打印时触发此代码,而不是在他们只是调用打印预览时触发。

有没有办法在Before_Print 代码中判断用户是实际打印还是预览?

我目前拥有的代码是(事件存根由excel生成):

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If Not Sheet2.CheckAllFieldsFilled Then
        Cancel = True
    End If
End Sub

【问题讨论】:

    标签: vba excel printing print-preview


    【解决方案1】:

    我认为没有一种简洁的方法可以确定事件是打印预览还是打印请求。

    下面的解决方案不是特别简洁,会给用户带来一些不便,但它确实有效。

    代码取消事件,然后提示用户,根据用户的响应显示打印预览或打印。

    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    
    Dim Print_or_Preview As XlYesNoGuess
    
    Application.EnableEvents = False
    
        Cancel = True
        Print_or_Preview = MsgBox("Show Print Preview?", vbYesNo)
    
        If Print_or_Preview = True Then
            ActiveWindow.ActiveSheet.PrintPreview
            Else
            ActiveWindow.ActiveSheet.PrintOut
        End If
    Application.EnableEvents = True
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      我想我会提供一个非常明显的按钮供用户在想要打印预览时按下。

      隐藏按钮以进行打印(在按钮的选项中),并让代码简单地说:

      ActiveWindow.ActiveSheet.PrintPreview
      

      【讨论】:

        【解决方案3】:

        要打印,你可以这样做:

        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        

        按照建议打印预览:

        ActiveWindow.ActiveSheet.PrintPreview 
        

        每个都需要一个不同的按钮,但无论哪种方式,我都强烈建议您测试您是否真的需要两个,因为预览按钮可能适用于您的打印选项,特别是因为在大多数情况下您可以直接从预览。

        我在这里可能错了,但我不这么认为。

        请注意,我这里发布的打印选项会直接打印,它不会请求选项,因为它们已经编码到脚本中,如果要更改要打印的份数,请更改@ 987654323@ 到您想要的任何号码...

        享受:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多