dポイントプレゼントキャンペーン実施中!

On Error Goto ラベル

ラベル内でエラー処理をしています。
エラー処理内でエラーが起こってしまう場合は無視して続けたいのですが、
ラベルの中に、
On Error Resume Next
と書いてもダメでした。
On Error Goto 0にしてもダメでした。

どのようにすれば可能ですか?

A 回答 (2件)

s_husky です。



もしかしたら参考になるかもです。

Public Function CnnExecute(ByVal strSQL As String) As Boolean
On Error GoTo Err_CnnExecute
   Dim isOK As Boolean
   Dim cnn As ADODB.Connection
  
   isOK = True
   Set cnn = CurrentProject.Connection
   With cnn
     .Errors.Clear
     .BeginTrans
     .Execute strSQL
     .CommitTrans
   End With
Exit_CnnExecute:
On Error Resume Next
   cnn.Close
   Set cnn = Nothing
   CnnExecute = isOK
   Exit Function
Err_CnnExecute:
   isOK = False
   If cnn.Errors.Count > 0 Then
     ErrMessage cnn.Errors(0), strSQL
     cnn.RollbackTrans
   Else
     MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _
        vbExclamation, " 関数エラーメッセージ"
   End If
   Resume Exit_CnnExecute
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。

やってみます!!

お礼日時:2006/10/03 22:13

Sub XXXXXXX (XXXXXX)


ON Error Goto Err_XXXXXXX
  ・・・・・
  ・・・・・
  ・・・・・
Exit__XXXXXXX:
On Error Resume Next
  ・・・・・
  Exit Sub
Err__XXXXXXX:
  ・・・・・
  Resume_Exit__XXXXXXX
End Sub

エラーによる無限ループ突入を回避する仕掛けは、Exit__XXXXXXX ブロックだけで事足りると思います。
仮に、Err__XXXXXXX ブロックでエラーが発生するのであれば、それは役割を果たしていないことになるのでは・・・。

・回避不能のエラーを発生させないことが先決と思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

確かにエラーを発生させないことが先決ですね…。
トランザクションを開始していないのに、
ロールバックしようとして落ちてしまいます。

お礼日時:2006/10/02 23:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!