急に音と飛び出してくる エラーのウインドウ、とてもイヤですね。
まぁ、あわてないで、デバッグボタンを押して 止まった場所 や 変数の中身などを確認しましょう
※2006-05-09 デバックからデバッグと文字を修正しました。
※2008-05-17 番外編でブレークポイントを貼ってデバックするそんな方法を紹介
こんにちは、三流プログラマーKen3です。 今回は、 実行時エラーが発生した時にあわてないで、 デバッグモードを押して確認する方法を軽く書きます。 気楽に読んでください。 また、前にイミディエイトウインドについて軽く書いた、 http://www.ken3.org/vba/iwind.html もあわせて見てください。
/* * 1.エラーが出るとイヤだよね。 */ AccessからExcelのApplication.GetOpenFilenameを使用して、 ファイル名を取得する解説を No.47 Excel Application.GetOpenFilenameでファイル名取得 http://www.ken3.org/backno/backno_vba10.html#47 でやりました。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba047.lzh にtest047-book.xls, db047.mdbが保存されています。 (Excel97,Access97) 下記のエラー内容のメールと添付ファイルが読者より来ました。 In message "画像のダイアログありがとうございましたぁ〜。", m*****@k*****さん wrote... >ダイアログの表示(ここまでは師匠のマネでばっちり) >ここから >画像を指定すると「実行時エラー」が…。(T◇T) > ↓ >指定されたデータ量がフィ−ルドサイズを超えています。 >データ量を減らし、挿入または貼り付けを行ってください。 > ↓ >「デバッグ」 > ↓ >Me![F_GFILENAME] = strFNAME '選択されたファイル名をセットする > > >う〜ん。 >師匠のファイルでは、どの画像も問題なく表示されるのに…。(T_T) >あぅ。 > >何故?、コケているのでしょうか? ---- んっ?師匠?いつから、、、まぁそんなことは、置いといて(なんか恥ずかしいけど) 実際動かしてみると、 あっエラーがでますね。 /* * 2.あわてず騒がずデバッグのボタンを押す。 */ 実行時エラーが表示されると、 [終了] [デバッグ]とボタンが押せます。 ここで、あわてないで[デバッグ]のボタンを押します。 すると、エラーの場所が黄色く反転されて、 ここだぞ、ここ、、ほら直せよ、、と表示されてます。 ~~~~~~~~~~~~~~~~~~ /* * 3.変数にカーソルを合わせると値を表示、?で表示、関数も使えるよ */ 場所の確認だけでわかってしまう場合も多いんだけど、 変数にカーソルを合わせると、中身が表示されます。 また、イミディエイトウインドウで、 ? 変数名とやっても、中身を表示可能です。 さらに、 ? Len(変数名) と、エラーで止めたまま(止まったまま)、 関数を実行することも出来ます。 *意外と便利です いろいろと値の表示などで探りを入れて、 あっ、ディレクトリが深いと(文字数が多いので)エラーなんだなぁ、 とエラー原因を無事つきとめました。 私のテスト環境ではD:\vba-test\と深くなく、 読者さんの環境では、My Documentsの下、、と長かったためでした。 デバッグ操作なれてくると、あたりまえの操作なんだけど、 はじめは私も知らなくって、苦労しました。 *私は、人がやってるのみて、 あっ、こんなこと出来るんだぁとデバッグの使い方を覚えました。 もっと、便利な使い方もあると思う。(みなさんのやり方もぜひ教えてね) 何か探り出したらまた得意になって、操作方法をお知らせしますね。 *えっ、知ってるよってことかも知れないけど、、、 /* * 5.おわりの挨拶 */ 今回は、 ・実行時エラー発生、あわてないでデバッグモードに ・変数にカーソル合わせると中身が表示されます ・?や関数を使ってイミディエイトウインドウで確認できます。 でした。 また、前にイミディエイトウインドについて軽く書いた、 http://www.ken3.org/vba/iwind.html もあわせて見てください。 何か素朴な疑問などあったら、メール、掲示板に気軽に書いてください。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
私の唯一の人気 IE操作の記事
[三流君VBAでIE操作 InternetExplorer.Applicationを操作する]
から、番外編として、ブレークポイント(やSTOP)を設定して、変数をウォッチする、そんな方法を載せます。
※エラー時に止める だけじゃなくて 正常処理時の途中で止めて確認する そんなイメージです。
資料探しに飽きたら現物を動かしながら見る、そんな方法もあります。デバックで止める、ウォッチで中身を見るがポイントです。※一度くらいは資料だけじゃなくて現物をさわってみては?
あんまり好きじゃないけど、
ブレークポイントを設定し、デバックで止めて、変数の中身・オブジェクトを見てみます。
~~~~~~~~~~~~~~~~
Sub xxxxx()
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://xxxx.xxxx.xxx/yyy.html"
'デバックで止める
MsgBox "OK?"
End Sub
右クリック、設定・解除 -- ブレークポイントを選択し、設定します。次にobjIE変数のオブジェクトの中身を見たいのでウォッチ式を追加します。
追加方法は、どこでもいいので、ソースの画面で
objIEをドラックして反転表示の選択後、右クリックしてウォッチ式の追加を選択します。
←参考画面
実行して、オブジェクトの中身を探る
ブレークポイントの設定
変数objIEをウォッチする準備が整ったので、
実行して、変数の中身を探ってみます。
実行すると、ブレークポイントの場所で止まります。
当たり前だろ、そのために設定したんでしょアナタが。
そうでしたね。
ブレークポイントで止まってからは、
飲み会に誘った女の子みたいに逃げないので
落ち着いて中身をチェックしましょう。
(飲み会で女性陣に逃げられてるみたいだなぁ、この書き方だと(笑))
ウォッチウインドウの変数名の横+をクリックして中身を探って行きます。
←参考画面
それにしても、階層が深いです。
テーブル系のオブジェクトを探すが、なかなか見つからない(笑)
(女の子じゃなくって、IEの心の中は複雑なのね、、、)
中身を確認するために、となりのイミディエイトウインドウで、
←参考画面
? objIE.document.body.innerText
とか、中身を聞いてみた(アクセスすることもできます)
ここだけは静止画よりも動画操作イメージの方がいいのかなぁ?
と思ったが、↑動画解説もダラダラ長い・・・静止画を大量に貼る方が見やすいのかも(静止画だと上に戻るのも簡単だしね、動画は説明の少し前に戻るのが不器用だと大変)
※説明で、左側を右側とか言ってるし、イミディエイトウインドウで変数の中身を見る時 空白連発でいつものグダグダ(笑)
※10番目とか本人言ってたけど、Item10番目なら 10-1でDocument.All(9)と9を指定しないとね(意外と読者様も間違えるかも?)。ツリーで見ていたデータが9と気がつかないで11・12と実行して気まずくなったからOuterHTMLに変えようとするがスペルを間違える最悪ですね。女性とデートなら中ならたぶん逃げられてるなキット
何かの参考となれば 幸いです
分類別といっても、あまり分類別にまとまっていないのですが、、、↓
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[プロパティ、メソッドを探る方法]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、あわてないでデバックを押す]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOP]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話
[サンプル 実行方法]・・・Alt+F11 や ツール--マクロ から VBAの編集画面を開き F5で実行?
イロイロな仕様書・設計書を各工程で使っていくのですが、その一部を書きました。
[基本設計書/仕様書のお話]・・・仕様書・設計書を書いてますか?簡単な流れを書きました。
[テスト仕様書のお話]・・・テストデータ XXXXを入力したら、YYYYになる ほか
[バグの連絡票とテストケース]・・・バグ・不具合の連絡を受けたら 原因を書き 処置する。
[関数仕様書のお話]・・・仕様書は頭の中にありますでいいの?かよ?
[作業の流れ 入力・処理・出力ほか]・・・フォルダー選択を例に仕様書と流れを解説
blog:あまり更新していない作業日記 →
[三流君の作業日記] と
[通販商品の足跡] も よろしくお願いします。