我正在使用Excel 2010 VBA进行查找,并在另一个工作表中打印名称和图片的各个页面。当我选择打印全部因为我已经创建了一个命令按钮,我得到了打印机对话框,以便我可以选择合适的打印机。如果我选择了正确的打印机,页面打印效果很好。我的问题是,如果我在打印机对话框中选择取消,页面仍将打印。如果选择取消,如何停止?
Private Sub PrintAll_Click()
Dim rngOffenders As Range
Set rngOffenders = Worksheets("Names").Range("A2",Worksheets("Names").Range("A2").End(xlDown))
Application.Dialogs(xlDialogPrint).Show
Dim rng As Range
For Each rng In rngOffenders.Cells
Worksheets("Template").Range("LastName").Value = rng.Value
Calculate
Worksheets("Template").PrintOut
Next rng
End Sub
答案 0 :(得分:3)
Application.Dialogs(xlDialogPrint).Show
.Show
是一个函数,这意味着返回一个值 - 一个Boolean
值,如对象浏览器所示( F2 ):
您的代码当前正在丢弃该值,并且该过程的其余部分将无条件执行。
您需要在变量中捕获该返回值:
Dim willPrint As Boolean
willPrint = Application.Dialogs(xlDialogPrint).Show
然后您有几个选项来处理取消;当结果为Exit Sub
时,最简单的可能是False
:
If Not willPrint Then Exit Sub 'dialog was cancelled: bail out