如何只处理一次错误处理?

时间:2016-08-31 12:54:35

标签: vba error-handling

我只想捕获一次错误处理语句,如果再次失败,则继续下一步。我不知道如何实现这一点,但到目前为止,如果代码继续失败,我可以重新运行代码。理由是,如果文件从不存在,我不想陷入循环。这就是我所拥有的:

....some code

TryAgain:

....
....
    If Not FileExists("C:\" & FileName) Then
         GoTo TryAgain >>> Only want to run this once if it fails again continue on down with the next section of codes.
    End If

 ....next code stuff....

2 个答案:

答案 0 :(得分:2)

.....Dim blnRetry as Boolean

blnRetry =true

TryAgain:
....
....
   If Not FileExists("C:\" & FileName) Then
         if blnRetry then 
               blnRetry=false
               GoTo TryAgain 
         end if
    End If

答案 1 :(得分:2)

我关于GoTo的规则是我只在On Error语句中使用它。考虑使用Do..Loop和计数器。这是一个例子

Sub Test()

    Dim sFile As String
    Dim lTryCnt As Long

    Const lMAXTRYCNT As Long = 10

    Do
        sFile = InputBox("Enter file name")
        lTryCnt = lTryCnt + 1
    Loop Until sFile = "False" Or Len(Dir("C:\" & sFile)) > 0 Or lTryCnt >= lMAXTRYCNT

    Debug.Print sFile, lTryCnt

End Sub
如果用户单击输入框上的“取消”,则

sfile = "False"。如果文件不存在,Len(Dir())将返回零长度字符串。