VBA - Excel - 出错时转到用户窗体

时间:2012-01-19 00:45:52

标签: vba error-handling excel-vba excel

当出现错误时,我想回到我的用户表单并更改表单上输入的信息并将其传递给宏,然后继续:如果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 Go GoTO UserForm1上错误”中定义

1 个答案:

答案 0 :(得分:3)

当您使用“On Error GoTo”语句时,您告诉程序当它遇到错误时,跳到当前过程中的特定行。例如:

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

ErrorHandler:
msgbox "Cannot divide by zero"

在这个例子中,当代码遇到错误时(在我的“On Error”语句之后),它将停止它正在做的事情并开始在ErrorHandler标签处执行代码(由于末尾的冒号,它是一个标签)。运行此代码,您将永远不会看到消息框说x =无穷大。一旦它通过尝试除以零来达到错误,它将跳转到ErrorHandler标签并给我一条消息,说我不能除以零。

Chip Pearson对基本错误处理here进行了很好的介绍。