• ベストアンサー

AccessでOn Error GoTo Errorを記載する場所について

x0000xの回答

  • ベストアンサー
  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

私の場合、On Error Goto の書く基準は以下です。 ・リソース関連の操作を行う場合に記述します。 (ハード的な条件は、ソフトでは予測できない為です) ・On Error Goto 発生時に処理すべき事がある場合 (ファイルのClose、recordesetのCloseなどがある場合) ・エラーメッセージを独自に表示したい場合 ・Accessの特定のエラーを無視したい場合 (たとえば、フォーカスのあるコントロールをEnabled=false する場合など、Errの値を識別しResume Nextするなどしています。) 上記、一例ですが On Error Gotoを記述すべきか否かを判断しています。

iroha_168
質問者

お礼

どうもありがとうございます。 エラーを書くべき基準のご意見、参考にさせていただきます。 何となく上記を実現するには、予めどういうエラーが発生する可能性があるのかという事を把握しておく必要がありそうですね。 今の所、「エラーメッセージを独自に表示したい」や「Accessの特定のエラーを無視したい」という用途は思いつかないのですが、「リソース関連の操作を行う場合」や「On Error Goto 発生時に処理すべき事がある場合」は何となくですが、イメージできそうなので、そういう事が発生する可能性があると予想できる箇所にエラートラップを書いてみるようにいたします。

関連するQ&A

  • アクセス2003 エラー13

    超初心者です。 簡単な下記の式なのですが、実行時エラー13 型が一致しません とエラーメッセージが出ます。 Private Sub コマンド0_Click() Me!テキスト1.FontSize = Me!テキスト5 End Sub テキスト名は合っています。 ご教示よろしくお願いします。

  • アクセスのVBAについて、フォームの On Error Goto についておしえてください。

    Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。

  • On ErrorでエラーNoが0

    On ErrorでエラーをトラップしてエラーNOとエラー内容をダイアログに表示させています。 Private Sub pv_sample() Dim errno as Long On Error GoTo ERR_END ' 処理内容略 Exit Sub ERR_END: errno = Err.Number MsgBox "システムエラー エラーNO(" & errno & ") 内容(" & Err.Description & ")" End Sub エラーが発生した場合はErr.Numberには0以外がセットされるはずですが 「システムエラー エラーNO(0) 内容()」 というメッセージが表示されることがあります。 On Eroorで飛んできたときにエラーNoが0になってしまうことはありえるのでしょうか。

  • Access VBA にて on error goto がたまに機能し

    Access VBA にて on error goto がたまに機能しないPCがあるます。 具体的には、on error gotoのコーディングを無視して、エラーのポップアップが表示される 何か対応する方法は、ありますか? 環境 ネットーワークにあるmdbをドライブに接続して、Accessを起動しています。   Windows2000(sp4)+Access2000(sp3) 他のPCでは、問題ありません。PCは、イメージをクローンして作成していますので、同一です。 ※コーディングイメージ Private Sub 稼働時間_AfterUpdate() on error goto ERR_稼働時間 Dim errcnt as integer errcnt = 0 DoCmd.GotoRecord A_FORM,"時間入力",A_NEXT <----- エラーのポップアップが表示される if errcnt = 1 Then DoCmd.GotoRecord A_FORM,"時間入力",A_PREVIOUS end if exit sub ERR_稼働時間: errcnt = errcnt + 1 resume next end sub

  • [Excel2003] On Error GoTo について教えてください。

    エラー処理について教えてください。 以下の様なマクロで、インプットボックスに 数字以外を入力した場合のエラー処理ですが、 次のような手順で進めると 「型が一致しません」とエラー表示されてしまいます。 どこがいけないのでしょうか?   【手順】   ・マクロ実行   ・インプットボックスへ数字以外の文字を入力   ・「OK」クリック   ・再びインプットボックス出現   ・もう一度数字以外の文字を入力   ・「OK」クリック←ここでエラー表示! Sub TEST() Dim Tuki As Integer On Error GoTo INPT INPT: Tuki = InputBox("何月分ですか?" & vbCrLf & _ "数字を入力してください。", "集計月入力", 1) If Tuki = 0 Or Tuki > 12 Then MsgBox "1から12の数字を入力してください。" GoTo INPT End If On Error GoTo 0 End Sub

  • OpenFormがACCESS2000でエラー

    メニューのフォームで使っているOpenFormがACCESS2000で次のエラーがでます。OFFICE365では出ません。 「selectステートメントが間違っている予約語や引数を含んでいるか、区切り記号が正しくありません」 例えば次のコードです。 Private Sub 受注入力_Click() DoCmd.OpenForm "受注入力" End Sub 同じようなコードでも次のコードではなぜか出ていません。 Private Sub 受注入力B_Click() DoCmd.OpenForm "受注入力B" End Sub このフォームは何年も変更しておらずエラーは出なかったのですが、1か月前あたりから出るようになりました。 なぜかお分かりの方がおられましたらご教示願えませんでしょうか。

  • エラーの理由が分りません。Private' であるため…?

    データを構造体で管理したいと思って、class testclassというクラスを作成しました。 それをtest2clsssで使うと思っているのですが、次のようなエラーが出ます 'testclass.code' は 'Private' であるため、このコンテキストではアクセスできません。 ソースは次のようなものです。 Public Class testclass Dim code As String End Class Public Class test2class Private Sub testsub() Dim test As New testclass test.code = "data" '←test.codeが駄目と言われる End Sub End Class subをPublicにしても同じエラーが出ています。 エラーの意味・原因は何で、どうすれば修正できるのでしょうか? よろしくお願いします。

  • 【Access】テキストボックスに入力後、そのテキストボックスを無効化する方法について

    txt_IDというテキストボックスにIDを入力して、 そのIDがデータベースに存在した場合、txt_IDを無効化したいと思います。 下記にソースコードを記載しましたが、下記では Me.txt_ID.Enabled = False まで遷移した後、下記のエラーメッセージが表示されてしまいました。 「実行時エラー '2164': コントロールがフォーカスを取得しているときは、コントロールを無効にすることはできません。」 【ソースコード】 Private Sub txt_ID_BeforeUpdate(Cancel As Integer) Dim record_Existence As Boolean ' 本来はDBにアクセスして入力したIDが存在するかチェックしています。 record_Existence = True If record_Existence = True Then Me.txt_ID.Enabled = False End If End Sub その為、上記のような場合、どのようにすればコントロールを無効化できるか、 ご存知の方がいらっしゃいましたら、ご教示いただければと思います。 よろしくお願いします。

  • Access(VBA)のエラー処理

    いつもお世話になりますm(__)m Access2003(VBA)のエラー処理について教えて下さい。 いつも、エラー処理は、各private sub毎に記述しています。 例えば private sub A() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub private sub B() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub 上記のようにしていますが、エラー処理は共通で、どうにか1つの記述(?)で全てのプロシージャに対してエラー処理が出来ればと思っています。 いろいろ調べましたが見あたらず、今は一つ一つのプロシージャに「on error...」と書いています。 MDBファイル単位で「エラーがあるとこれを実行」のような共通のエラー処理を実装する事は出来ないのでしょうか? お詳しい方、是非ご教授下さい。可能であればサンプルを記述頂くと助かります。 宜しくお願い致しますm(__)m

  • アクセス2010でコンパイルエラーが出てしまいます

    アクセス2010でコンパイルエラーが出てしまいます。 Private Sub <_条件入力画面を開く_Click() Private Sub JJJ・メディカル評価対比表_Click() Private Sub エクセルに出力(指摘あり)_Click() office2003からoffice2010に変更したところ、上記の箇所がエラーになってしまいました。 これだけでは、わからないという事でしたらおっしゃってください。 お手数掛けますが、よろしくお願いいたします。 (初心者なのでわかりやすい回答ですと助かります...)