2017-07-10 5 views
-1

特定のパスに移動し、そこからデータをインポートするコードを記述する必要があります。 は別のパスに移動して同じ処理を行います。「エラーがサブになった場合」

私はパスnumの1が存在しない場合、それは私が各パスのサブを書いたパスNUMに2

を直接ジャンプすることが必要です。そこのような何かをする方法です:事前に直接

答えて

1

ないで

if error goto sub ___ ? 

おかげで、しかし、あなたは

On Error Goto error_sub1 

ような何かをし、あなたの関数の下部に、

を書くことができます
error_sub1: 
'ToDo - put your calling code here. 

他の機能では、エラーハンドラを別のラベルに切り替えることができます:

On Error Goto error_sub2 

などとなる。

1

はこれを試してみてください:

Sub testSO() 

On Error GoTo err 
I=5/0 

Exit Sub 
err: 
<your sub procedure here> 

End Sub 

が終了サブを含めることを忘れないでくださいまたはそうでなければ、まだエラーがなくても実行されます!

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 
関連する問題