当我select打印所有,我得到一个打印对话框。 如果我select取消,它仍然会打印

我正在使用Excel 2010 VBA执行查找并在另一个工作表中打印名称和图片的各个页面。 当我select打印所有,因为我已经创build了一个命令button,我得到打印机对话框,所以我可以select适当的打印机。 如果我select了正确的打印机,页面打印完美。 我的问题是,如果我select取消打印机对话框,页面仍然会打印。 如果我select取消,我怎样才能做到这一点?

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 

 Application.Dialogs(xlDialogPrint).Show 

.Show是一个函数 ,这意味着它返回一个值 – 一个Boolean值,如对象浏览器( F2 )所示:

显示Excel.Dialog成员的对象浏览器

您的代码正在丢弃该值,并且该过程的其余部分无条件执行。

你需要捕获一个variables的返回值:

 Dim willPrint As Boolean willPrint = Application.Dialogs(xlDialogPrint).Show 

然后你有几个select来处理取消; 最简单的可能是当结果为FalseExit Sub

 If Not willPrint Then Exit Sub 'dialog was cancelled: bail out