它是可行的“如果错误转到sub”

时间:2017-07-10 09:02:19

标签: vba excel-vba excel

我需要编写转到特定路径的代码并从中导入数据, 然后转到另一条道路并做同样的事情。

我需要如果路径num 1不存在,它将直接跳转到路径num 2。

我为每条路径写了一个子。有办法做一些事情:

if error goto sub ___  ?

提前致谢

3 个答案:

答案 0 :(得分:1)

不直接,但您可以执行类似

的操作
On Error Goto error_sub1

并在函数的底部写上

error_sub1:
'ToDo - put your calling code here.

在您运行的其他地方,您可以将错误处理程序切换到另一个标签:

On Error Goto error_sub2

等等。

答案 1 :(得分:1)

试试这个:

Sub testSO()

On Error GoTo err
I=5/0

Exit Sub
err:
<your sub procedure here>

End Sub

请记住包含Exit Sub,否则即使没有错误它仍会运行!

答案 2 :(得分:0)

首先避免错误并在尝试打开文件之前检查文件是否存在不是更好吗?

Sub Test()

    Dim sFile1 As String
    Dim sFile2 As String
    Dim wrkBk As Workbook

    On Error GoTo Error_Handler

    sFile1 = "C:\Users\Desktop\MyFile1.xls"
    sFile2 = "C:\Users\Desktop\MyFile2.xls"

    If FileExists(sFile1) Then
        Set wrkBk = Workbooks.Open(sFile1)
    ElseIf FileExists(sFile2) Then
        Set wrkBk = Workbooks.Open(sFile2)
    Else
        Err.Raise 513, , "File Not Found."
    End If

    wrkBk.Worksheets(1).Range("A1") = "Opened this file."

    On Error GoTo 0

Fast_Exit:
'Any tidying up that needs doing.

Exit Sub

Error_Handler:
    MsgBox Err.Description, vbExclamation + vbOKCancel, _
        "Error: " & CStr(Err.Number)
    Err.Clear
    Resume Fast_Exit

End Sub

Public Function FileExists(ByVal FileName As String) As Boolean
    Dim oFSO As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    FileExists = oFSO.FileExists(FileName)
End Function