user6778865
user6778865

Reputation:

How to handle error handling once only?

I want to catch my error handling statement only once, if it fails again, resume next. I'm not sure how to achieve that but so far i'm able to rerun the code if it keeps on failing. Reason is i don't want to get stuck in a loop if the file never exist. Here's what i have:

....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....

Upvotes: 0

Views: 74

Answers (2)

Dick Kusleika
Dick Kusleika

Reputation: 33175

My rule about GoTo is that I only use it in an On Error statement. Consider using a Do..Loop and a counter. Here's an example

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" is if the user clicks Cancel on the inputbox. Len(Dir()) returns a zero length string if the file doesn't exist.

Upvotes: 2

Nathan_Sav
Nathan_Sav

Reputation: 8531

.....Dim blnRetry as Boolean

blnRetry =true

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

Upvotes: 2

Related Questions