当出现错误时,我想回到我的用户表单并更改表单上输入的信息并将其传递给宏,然后继续:如果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上错误”中定义
答案 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进行了很好的介绍。