a_m*_*m0d 5 printing excel vba print-preview
我有一些代码可以拦截Before_PrintExcel 中的事件,以确保用户在打印表格之前填写了所有必填字段。但是,我只希望在用户实际打印时触发此代码,而不是在他们只是调用打印预览时触发。
有什么方法可以在Before_Print代码中判断用户是在实际打印还是只是在预览?
我当前拥有的代码是(事件存根由excel生成):
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Not Sheet2.CheckAllFieldsFilled Then
Cancel = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我认为没有一种巧妙的方法来确定该事件是打印预览还是打印请求。
下面的解决方案不是特别简洁,并且给用户带来了轻微的不便,但它确实有效。
该代码取消该事件,然后提示用户,根据用户的响应显示打印预览或打印。
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
Run Code Online (Sandbox Code Playgroud)