2016-08-31 16 views
0

エラー処理のステートメントを1回だけキャッチしたい場合は、もう一度エラーが発生した場合は、次に再開してください。私はそれを達成する方法はわかりませんが、これまで失敗し続けていればコードを再実行することができます。理由は、ファイルが存在しない場合、私はループで立ち往生したくないということです。ここで私が持っているものです。一度のみエラー処理を処理するには?

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

gotoはsatanのスポーンです。代わりにポーパーループを使用してください。 – vacip

答えて

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 
+0

私にそれを打つ:) –

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())は、ファイルが存在しない場合は長さゼロの文字列を返します。

+1

これは***多くの***より良いです。 – Comintern