2'On Error goto'语句中的第二个被忽略

时间:2011-09-02 21:06:18

标签: excel-vba vba excel

我有一些代码尝试将11x17纸张设置为默认值...

        On Error GoTo PageSizeErr
        ActiveSheet.PageSetup.PaperSize = xlPaperTabloid

'这里有更多代码

PageSizeErr:
    On Error GoTo PageErr2
    ActiveSheet.PageSetup.PaperSize = xlPaper11x17  'try another 11x17 driver definition
    GoTo resumePrinting
PageErr2:
    MsgBox ("There's a problem setting Tabloid paper for the printer you have selected." & Chr(10) _
    & "If you have an 11x17 printer selected, please contact EMBC, otherwise, try a different printer.")
    Exit Sub

--------------代码示例结束-----------------

当它到达第二个'ActivateSheet.PageSetup ...行时,我得到一个错误对话框而不是去找PageErr2标签。 (我选择的打印机不支持11x17,这正是我要测试的。)

需要多个错误处理程序,因为不同的打印机驱动程序似乎以不同的方式处理设置。

为什么没有第二个'On Error goto'语句被识别?

1 个答案:

答案 0 :(得分:3)

您不能在错误处理程序中使用错误goto。 见http://www.cpearson.com/excel/errorhandling.htm

也许尝试这样的事情:

Sub Tester()

Dim pSize As XlPaperSize

    pSize = xlPaperTabloid


    On Error GoTo haveError:
    ActiveSheet.PageSetup.PaperSize = pSize
    'print stuff...

    Exit Sub

haveveError:
    If pSize = xlPaperTabloid Then
        pSize = xlPaper11x17
        Resume
    End If
    MsgBox ("Couldn't print using tabloid or 11x17")

End Sub