2011-09-02 47 views
3

我有嘗試設置的11x17紙作爲默認的一些代碼...2第二個「對錯誤轉到」語句被忽略

 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

只要改變你的「對錯誤轉到」第二到一個goto就大功告成了。 – Kevin

回答

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