Forループ内で発生したエラーをOn Error Gotoで処理して、Nextで次ループを実行させ、またエラーが発生したときに、On Error が効きません。On Errorをループの中に書いても外に書いても同じです。なぜでしょうか。教えてください。
エラー処理ルーチンから、再度エラー処理を行う事はできません。
On Error Resume ステートメントでエラー復帰させるか、
On Error GoTo 0 でエラートラップを解除する必要があります。
詳細は、VB6 ヘルプの下記の項をご覧ください。
[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
└[プログラミング ガイド]
└[Visual Basic を使ってできること]
└[コードのデバッグおよびエラー処理]
回答ありがとうございます。
簡単に書くと下記のような感じなんですけど、これでもダメなんですが、どうしてなんでしょう・・・。
Function ・・・・
for ・・・
On Error Goto 0
On Error Goto ErrLabel
エラーが発生する行
nextLabel:
next
ErrLabel:
エラーログ出力
goto nextLabel
End Function
MSDNに書かれている通りエラー処理ルーチンがアクティブの時はエラーが処理できないためです。
For文の中の処理をプロシージャー化するかResume を使ってください。
Private Sub Command1_Click()
Dim i As Long
For i = 0 To 100
On Error GoTo ErrHandle
If i Mod 2 = 0 Then
Err.Raise &H80000000
End If
ErrHandle:
If Err.Number <> 0 Then
'エラー処理
Resume NextLoop
End If
NextLoop:
Next
End Sub
Private Sub Command2_Click()
Dim i As Long
For i = 0 To 100
Call sbTest(i)
Next
End Sub
Private Sub sbTest(cnt As Long)
On Error GoTo ErrHandle
If cnt Mod 2 = 0 Then
Err.Raise &H80000000
End If
ErrHandle:
If Err.Number <> 0 Then
'エラー処理
End If
End Sub
Resume!ありがとうございました!
| ツイート |
|