Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5400 / 13644 ツリー ←次へ | 前へ→

【50964】アプリケーションエラーの調査方法 FJ 07/8/23(木) 15:23 質問[未読]
【51056】Re:アプリケーションエラーの調査方法 りった 07/8/27(月) 9:19 回答[未読]

【50964】アプリケーションエラーの調査方法
質問  FJ  - 07/8/23(木) 15:23 -

引用なし
パスワード
   すみません。初歩的なことなのかも知れませんが、どなたかわかる方
アプリケーションエラーの調査方法について教えてください。

ある端末でマクロを実行すると、下記のようなメッセージが出力されます。
(WinXPとEXCEL97の組み合わせです。同様の組み合わせの別端末で実行する場合は
正常終了します)

「"0x05247340"の命令が"0x05247340"のメモリを参照しました。メモリーが
 "written"になることは出来ませんでした」

この場合、どのような事が考えられ、それを調査するにはどうしたら良いのでしょうか。
エディターにてエラー箇所が表示されれば良いのですが、このエラーに対して応答を
返すと、マクロが終了してしまいエラー箇所を確認することが出来ません。

原因調査の方法として何か良い方法があればご教授ください。よろしくお願いします。

【51056】Re:アプリケーションエラーの調査方法
回答  りった  - 07/8/27(月) 9:19 -

引用なし
パスワード
   「初歩的なことなのかも知れませんが」とのことなので一応回答しておきます。
「そんなことは解ってる(怒)」でしたら御免なさい。

落ちたアドレスを元に解析するのは難しい(多分みんな知らないので回答が無い)ので地道に下記をするしかないと思います。

^^^^^^^^^^^^^^^^^^ エラーが起きている行を特定する
マクロの数箇所にブレイクポイントを張り、どの範囲で落ちるかを狭めていく。
ループの箇所で落ちる場合は、下記のような無駄処理を書いてブレイクを張る。
if i = 12 then
 x = x ' ここでbreakを張る
endif

^^^^^^^^^^^^^^^^^^ エラー原因を調べる
エラーが起きる行で使用しているオブジェクトが存在しているか確認する。
存在していないオブジェクトが判明したら、本来作るべき場所でブレイクを張り、
作成時のパラメータ等を確認する。

もう少し効率的な方法が有るかも知れませんが(特にループの部分)大筋はこんな感じでしょう。

5400 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free