エラーの原因をつきとめるには?

解決


やいこ  2003-07-16 17:18:08  No: 107805  IP: [192.*.*.*]

VBを始めたばかりの初心者です。
ご存知の方、教えていただけたら光栄です。

あるプロシージャ内で、エラーが発生し
On Error Go To  で、エラーProcに飛んでいるところまで
突きとめたのですが、

なにが原因で、なんのエラーなのか、さっぱりわかりません。

そこで、エラーログをテキストファイルなどに出力させるとか、
エラーが発生したときに画面にエラーログを出力させる方法などは
ないものか、ヘルプで調べてみたのですが、とても目的まで辿りつけませんでした。

このような方法をご存知の方、
また、他に適当な処理をご存知の方、
お力をお貸しください。よろしくお願いします。

編集 削除
nanashi  2003-07-16 17:29:58  No: 107806  IP: [192.*.*.*]

Call MsgBox(Err.Number & vbCrLf & Err.Description)

とか?

編集 削除
Say  2003-07-16 18:31:01  No: 107807  IP: [192.*.*.*]

On Error Goto をコメントアウトするとか。

編集 削除
やいこ  2003-07-17 10:47:26  No: 107808  IP: [192.*.*.*]

nanashiさん、Sayさん、ありがとうございます。

Call MsgBox(Err.Number & vbCrLf & Err.Description)

を、挿入したところ、たしかにエラーメッセージが出ました。

レコード長が一致していないとうエラーメッセージでした。
桁落ちしていないかどうか、調べていきたいと思います。

ありがとうございます。

ちなみに、この"call"関数なんですが、なにかプロシージャを
呼ぶときにつけるイメージがあったんですが。
上記のようなMsgboxを出すときにも付けるのは
フォーマルなのかな?

CALLを省いた形でもやってみましたが、同じ様な結果が得られました。

SayさんのOn  ErrorGotoをコメントアウトするやり方は
わかりませんでした。
ネットでもう少し検索してみたいと思います。

編集 削除
Say  2003-07-17 11:21:07  No: 107809  IP: [192.*.*.*]

>ErrorGotoをコメントアウトするやり方は
>わかりませんでした。
単に文頭に「'」(シングルクォート)つけるだけなんですが・・・。

つまりこう。

'On Error Goto どっかのラベル


通常、開発中はOn Error Goroはコメントアウトして、
正常系をテスト実行しながら修正していきます。

もうエラーは出ない、と判断したら
コメントアウトをはずして異常系(Error処理ができているか)
のテストをします。

編集 削除
nanashi  2003-07-17 11:25:04  No: 107810  IP: [192.*.*.*]

Callを付けるのは私の癖です(^^;

メッセージボックスを使う場合以外にもありますが、
引数が複数の関数で戻り値の無いもの(もしくは戻り値を受け取らないもの)を呼ぶとき
括弧をつけているとコンパイルエラーが出ます。
かといって関数を呼ぶときに括弧をつけないのは個人的に嫌なのでCallを使っているんです。


ちなみにコメントアウトは「'」を文の頭に付けると出来ます。

編集 削除
やいこ  2003-07-17 11:45:28  No: 107811  IP: [192.*.*.*]

Sayさん、ありがとうございます。

コメントアウトとはコメント文にするということだったのですね。。
とても恥ずかしいです。

さっそく、やってみたいと思います!

nanashiさん、ありがとうございます。

なるほど、納得です!
また勉強になりました。
私も取り入れたいと思います。

編集 削除
やいこ  2003-07-17 17:20:24  No: 107812  IP: [192.*.*.*]

Sayさん、
確かにコメントアウトすると、エラーも出力されてエラー箇所も
特定できました。

とっても基本的なことなんですよね、これって。
おはずかしいです。

でも、色々試したことで勉強になりました。

ありがとうございます。

編集 削除