excel vba中的打印和打印预览事件之间的区别
我有一些代码在Excel中拦截Before_Print
事件,以确保用户在打印表单之前填写了所有必填字段。 但是,我只希望在用户实际打印时触发此代码,而不是在调用打印预览时触发。
在Before_Print
代码中是否有任何方法可以告诉用户是实际打印还是只是预览?
我现在的代码是(事件存根由excel生成):
Private Sub Workbook_BeforePrint(Cancel As Boolean) If Not Sheet2.CheckAllFieldsFilled Then Cancel = True End If End Sub
我不认为有一个确定事件是打印预览还是打印请求的方法。
下面的解决scheme不是特别整洁,不方便用户稍微,但它的工作原理。
代码取消事件,然后根据用户的响应提示用户显示打印预览或打印。
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
我想我会提供一个非常明显的button,供用户在想要打印预览时推送。
使button隐藏打印(在button的选项),并让代码简单地说:
ActiveWindow.ActiveSheet.PrintPreview
要打印,你可以做这样的事情:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
按照build议打印预览:
ActiveWindow.ActiveSheet.PrintPreview
每个人都会需要一个不同的button,但无论哪种方式,我强烈build议您testing,如果你真的需要这两个,因为预览button可能适用于您的打印选项,尤其是因为你在大多数情况下,能够从预览中直接打印。
我可能在这里错了,但我不这么认为。
只是一个头,我在这里发布的打印选项将直接打印,它不会请求选项,因为它们已被编码到脚本,如果你想改变多less份你想打印,更改copies:=
到不pipe你想要什么号码
请享用 :)