Второе из двух утверждений «On Error goto» игнорируется - PullRequest
3 голосов
/ 03 сентября 2011

У меня есть код, который пытается установить бумагу 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, и это то, что я пытаюсь проверить.)

Требуется несколько обработчиков ошибок, поскольку кажется, что разные драйверы принтера обрабатывают настройку по-разному.

Почему второй оператор «Перейти к ошибке» не распознается?

1 Ответ

3 голосов
/ 03 сентября 2011

Вы не можете использовать в сообщении об ошибке в обработчике ошибок.См. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...