アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSでかなり長いVBAのプログラムを書いてあるのですが不定期にエラーが出ます。デバッグ画面で確認するとendsubで区切られたはずのプログラムが区切り線がなくなっていてアクションを起こしてくれません。これってACCESSのバグですか?あるいは私の書き方に無理があるのでしょうか?

A 回答 (2件)

まず、End Sub が重なったら、実行時エラーにはなりませんね。


たぶん、原因は、メモリのオーバーフローではありませんか?遠因では、「長いVBAのプログラム」というのが問題ではないでしょうか?

どのような内容かは分かりませんが、Object を放置してあって、その実行を重ねて使ってしまう。例えば、RecordSet をそのまんまにしてしまうとか?また、Public ステートメントにObjectを宣言し、Close していないとか、やってはいけないミスですね。便利だからとグローバル変数を安易に書く人がいますが、私は、慎重に使って多用しないようにしています。

まして、ループの中で、Object の設定をするなんていうのは、論外ですが、時々見かけます。

それはともかくとして、マクロならともかく、「長いVBA」コードというのは、更新も利かず、エラーでも迷宮入りになりかねませんから、各役割をパーツにして、サブルーチン化し、メインを設けて構造化してください。私の場合は、PCが古いので、サブルーチンの中で、その都度、Objectの開放をして負担を減らしています。掲示板などのサンプルは、一本で書くのが慣例ですが、実務では分けるようにしています。
    • good
    • 0
この回答へのお礼

たぶんおっしゃるとおりです。そうじゃないかなと思っていたことを的確に指摘していただきましてありがとうございました。もしかしたら他の要因があるのかな?と思ってましたがこれですっきりしました。作り直しを考えます。

お礼日時:2005/05/02 13:43

Private Sub ~ End Sub ~ End Subのように、単独でEnd Subが存在していませんか?

    • good
    • 0

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