当我选择全部打印时,我会得到一个打印对话框。如果我选择取消,它仍然会打印

时间:2017-04-18 18:08:34

标签: excel vba

我正在使用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

1 个答案:

答案 0 :(得分:3)

Application.Dialogs(xlDialogPrint).Show

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

Object Browser showing members of Excel.Dialog

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

您需要在变量中捕获该返回值:

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

然后您有几个选项来处理取消;当结果为Exit Sub时,最简单的可能是False

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