最新閲覧日:

Private Sub cmd次_Click()

On Error GoTo Err
DoCmd.GoToRecord , , acNext
Exit_Click:
Exit Sub

Err:
MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。"
Resume Exit_Click


End Sub


一連の流れについて,ご解説ください。よろしくお願いいたします。

A 回答 (2件)

詳しくは、DoCmd.GoToRecord・・・の行にブレークポイント(F9)を仕掛けてコードを実行し、止まった位置から1行ずつ実行(F8)させると分かります。





*****エラー処理の色々************
Sub cmd次_Click()
 MsgBox "1"
 On Error Resume Next '以後エラーが起きても無視する
 DoCmd.GoToRecord , , acNext
 If Err <> 0 Then 'エラーが起きていれば
  MsgBox "2"
 End If
 On Error GoTo 0 '以後エラーが起きたら、エラーになる
 MsgBox "3"
End Sub

'DoCmd.GoToRecord・・・でエラーなら1,2,3、エラーでなければ1,3

*****************
Sub cmd次_Click()
 MsgBox "1"
 On Error GoTo ErrTrap 'エラーが起きた時点でErrTrapにジャンプ
 DoCmd.GoToRecord , , acNext
 MsgBox "2"
 MsgBox "3"

Exit_Click:
 MsgBox "4"
Exit Sub
ErrTrap:
 MsgBox "5"
 Resume 'エラーをクリアして、再トライ
End Sub
'エラー時は、1,5,5,5,5・・・(次レコードに移動できるようになるまで、繰り返し) 、非エラー時は1,2,3,4
*******************
Sub cmd次_Click()
 MsgBox "1"
 On Error GoTo ErrTrap 'エラーが起きた時点でErrTrapにジャンプ
 DoCmd.GoToRecord , , acNext
 MsgBox "2"
 MsgBox "3"

Exit_Click:
 MsgBox "4"
Exit Sub
ErrTrap:
 MsgBox "5"
 Resume Next'エラーをクリアして、エラーの次の行にジャンプ
End Sub
'エラー時は、1,5,2,3,4 、非エラー時は1,2,3,4
*******************
Sub cmd次_Click()
 MsgBox "1"
 On Error GoTo ErrTrap 'エラーが起きた時点でErrTrapにジャンプ
 DoCmd.GoToRecord , , acNext
 MsgBox "2"
 MsgBox "3"

Exit_Click:
 MsgBox "4"
Exit Sub
ErrTrap:
 MsgBox "5"
 Resume Exit_Click 'エラーをクリアして、Exit_Clickにジャンプ
End Sub
'エラー時は、1,5,4 、非エラー時は1,2,3,4
*******************
    • good
    • 0

On Error GoTo ラベルは


それ以降の処理でエラーが発生したときにラベルにジャンプします。

次の行が繰り返し文ですが、処理中にエラーが発生したときは繰り返しを中止してErrへジャンプしてエラーメッセージを表示してEnd Subで終了します。

エラーが無ければ条件まで繰り返し処理を行いExit Subで終了します。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報