VBA - Excel - При ошибке перейти к пользовательской форме - PullRequest
0 голосов
/ 19 января 2012

Когда возникает ошибка, я хочу вернуться к своей пользовательской форме, изменить информацию, введенную в форму, повторно передать ее в макрос, а затем продолжить: If Len (Dir (sFilePath & newfol, vbDirectory)) = 0 ...

If Len(Dir(sFilePath & newfol, vbDirectory)) = 0 Then
            MkDir sFilePath & newfol & "\"
            On Error GoTo UserForm1
        Else
            MsgBox ("Folder already exists please re enter new folder name")
            'End
            UserForm1.Show
            MoveAndSave_Reports
End If

Выше приведено сообщение об ошибке: Ошибка компиляции: не определена метка «On Error GoTO UserForm1»

1 Ответ

3 голосов
/ 19 января 2012

Когда вы используете оператор «On Error GoTo», вы сообщаете программе, что при обнаружении ошибки переходите к определенной строке в текущей процедуре. Например:

On Error GoTo ErrorHandler
x = 10 / 0
msgbox "x = infinity!"

ErrorHandler:
msgbox "Cannot divide by zero"

В этом примере, когда код обнаруживает ошибку (после моего оператора «On Error»), он останавливает свою работу и начинает выполнять код с меткой ErrorHandler (это метка из-за двоеточия в конце). Запустив этот код, вы никогда не увидите окно с сообщением x = бесконечность. Как только он попадает в ошибку, пытаясь поделить на ноль, он перейдет к метке ErrorHandler и выдаст мне сообщение о невозможности деления на ноль.

Чип Пирсон имеет хорошее введение в базовую обработку ошибок здесь .

...