★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0019:ついでに、ウォッチウィンドウの「一般的に、普通に使う使い方」も少し-02。(エラー回避の基礎03)
バックナンバー目次ページは→こちらです。
まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
Vol.0019
タイトル:ついでに、ウォッチウィンドウの「一般的に、普通に使う使い方」も少し-02。(エラー回避の基礎03)
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
今回は前回の続きです。
小数の誤差の回避ではなくて、
「一般的に、普通にウォッチウィンドウを使う使い方。~式の型や値を調べる方法」
の続きとなります。
よろしくお願い致します。
あと、過去の号で訂正があります。
『 ★ (09) 挫折しないための「コレクション」とは? 』の号です。
↓バックナンバーはこちら。
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01-06#lbl_100
【誤】
実際には、「Workbooksコレクションオブジェクト」が内包している「Itemプロパティ」
という命令が、
「Sheet1」という単一のシートを取得(ゲット)しています。
↓
【正】
実際には、「Worksheetsコレクションオブジェクト」が内包している「Itemプロパティ」
という命令が、
「Sheet1」という単一のシートを取得(ゲット)しています。
※このWebページでCtrl+Fして、
「Worksheetsコレクションオブジェクト」で検索してみて下さい。
訂正した箇所に飛びます。
コレクションの名前の「Workbook」と「Worksheets」を書き間違えてしまいました。
大変重要な箇所なのに間違えてしまい、ご迷惑をおかけして大変申し訳ございませんでした。
バックナンバーはこちらの訂正とともに、少し加筆しました。
もしよろしければそちらも見てみてくださいませ。
では、以降、本文です。
よろしくお願い致します。
*************
*************
今号は図が少しあります。
前回のプログラムの、途中からお話させていただきます。
今回もウォッチウィンドウの操作をご説明しつつ、
でも、、
ウォッチウィンドウの操作とは関係ない、
「短いコードのひとつひとつの内容・意味」、についても、
並行して解説していきます。
それは、「演算子」や「オブジェクト」などについてです。
ウォッチウィンドウの操作とは関係のないことをゴチャゴチャと書きますが、でも、
繰り返しになりますが、
「市販書籍やWebにはあまり書かれていない」、「★ 全部・重要なこと」、なので、
どうか読んでみてください。
もし僕が書いていることが正しくなくても、読者の皆様がそこをご自分でより深く学習することで、「いつか、ある地点から爆発的に上達する!」ということに、
「必ず」、
「繋がって」
「いきます」。
それは事実です。
特に初心者の方や「ヘルプとオブジェクトブラウザが読めないかた」には読んでほしいです。
ウザかったら読みたいところだけ読んで、あとから、飛ばしたところを読んでみてください。
でも、必ず、飛ばしたところはあとで読んでください。
理由は、
こちらも繰り返しになりますが、
今号に書いてあるようなことを「自分のアタマで考えずに」すっ飛ばして、
「手抜き」「ラク」をしてしまうと、
永遠に「ヘルプとオブジェクトブラウザが読めないバカ」に成り下がってしまう確率が上がってしまうから
です・・・。
今回は、ウォッチウィンドウの「普通な使い方」です。
またもや長いです。
すみませんが、よろしくお願い致します。
では早速ですが、以下のコードをVBEの適当な標準モジュールにコピペしてみてください。
(前回やってなかった人や、ファイルを捨ててしまったかたなど)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
' ' Sub test0002() Dim ttt As Object Dim ggg As Variant Debug.Print 100 * 40.2 Debug.Print 1 < 2 Debug.Print (1 < 2) = True Debug.Print 1 < 2 = True Debug.Print 1 > 2 Debug.Print (1 > 2) = True Debug.Print 1 > 2 = True Debug.Print 1 > 2 = False Debug.Print (1 > 2) = False Set ttt = ActiveWorkbook.Worksheets("Sheet1").Range("A1") ggg = ActiveSheet.UsedRange Stop End Sub ' ' |
で、イミディエイトウィンドウ、ローカルウィンドウ、ウォッチウィンドウを表示しておいてください。
では、今回も F8キーのステップ実行で1行ずつ実行してみます。
何回か、F8キーを押してください。
イミディエイトに、
4020
True
True
True
などと表示されたと思います。
で、
今回は、
「Debug.Print 1 > 2」
からですね。
F8キーを押して、その行が黄色くなったら、一時停止のままにしておいてください。
前号では、僕がバカ過ぎて大変申し訳ございませんでした。
ウォッチウィンドウの使い方、というよりも、
イミディエイトや「演算子」の細かい説明になってしまっていました。
(いちおう、前置きはしましたが・・・)
なので、今回は、ウォッチウィンドウの普通の使い方、も少し交えていきたいと思います。
では、
「Debug.Print 1 > 2」
の行が黄色くなっている状態から、
「1 > 2」だけをドラッグで青色反転表示させ、
そのまま、ウォッチウィンドウにドラッグで放り込んでみてください。
すると、
「式」の列に「1 > 2」
「値」の列に「False」
「型」の列に「Boolean」
と出てきました。
ところで、
「Debug.Print 1 > 2」
はまだ「黄色いまま」ですか?
もし実行しちゃって、黄色いままになっていなかったら(次の行が黄色かったら)、
いったん中断して、やりなおしてください。
んで、
「Debug.Print 1 > 2」
は、
また黄色いままになっていますよね?
つまり
「まだ、実行されていません。」
「これから実行する」
「その直前」
の状態です。
でも、
ウォッチウィンドウでは、すでに、
「式」の列に「1 > 2」
「値」の列に「False」
「型」の列に「Boolean」
と出ていますよね?
このように、ウォッチウィンドウでは、
『 プログラムが実際に実行されていなくても 』、
指定した式が「返してくれる」、その「値や型」が分かります。
もっというと、実は、
『 プログラム実行が開始された=プロシージャ名が黄色くなっただけの時点で 』
『 F8キーを1回押しただけの時点で 』
指定した式が「返してくれる」、その「値や型」が分かります。
これは・・・・、
『 プログラムが1行も実行されていなくても 』、
『 ウォッチウィンドウに並べた多くの式(=変数などは除く)について 』
(=「知りたいこと」について)
『 値や型が、わかります。』
・・・・ということになります。
※ただし、式の中に「変数」が含まれていると、その変数に何かが代入されてからでないと何も分かりません。なので「多くの」としました。
下図のようにF8キーをまったく押してない時は、何も値や型は表示されません。
しかし、F8キーをたった1回押しただけで、以下のように(この場合は)すべての式の、値や型が、「バッ!!!」と出てきます。(下図参照)
なので、色々調べたいときに、
『 プログラム実行前、にでも、いろんなことがわかる 』
ともいえますので、
『 原因の切り分け 』
をしたいときに、
『 どの段階で、何がどう動いているか 』
を調べるのにも役に立ちます。
たとえば、
『 プログラムを開始しただけの直後の段階では この式はこの値や型なのに 』
『 この行を実行してしまうと、おかしな値や型に変化してしまう 』
といったようなことがわかります。
そこから、エラーを潰していくことができたりもします。
なお、
『 プログラムが1行も実行されていなくても 』、
『 ウォッチウィンドウに並べた多くの式(=変数などは除く)について 』
『 値や型が、わかります。』
ということは、
式について何か知りたいと思ったら、デバッグ中でも、いつでも、
「知りたいと思ったときに」
「ウォッチウィンドウにドラッグしてしまえばOK!」
ということでもあります。
変数は、「式(リテラル値も含め)」が代入されてからでないと値や型はわかりませんが、
ウォッチウィンドウは、代入される前の「式(リテラル値も含め)」の値や型がわかるので、
『 変数の型を、しっかりと・間違えずに設定しているか? 』
『 そもそも代入する式のほうが、おかしなことになってはいないか?』
なども、調べやすいです。
「知りたいと思ったときに」
「式を ウォッチウィンドウにドラッグしてしまえばOK!」
なのですから。
===
では、お待たせいたしました。
大変長くなってすみませんが、
ここでやっと、
黄色かった「Debug.Print 1 > 2 」を
実行してみましょう。
★すでに、ウォッチウィンドウには、下図のように
「値」が
「False」
となっています。
でも、まだ、
「実行」
「直前」
の状態です。
★・・・ということは、、
これから、この値が、
つまり、
ウォッチウィンドウに表示されている「False」が、
イミディエイトウィンドウにも、
返ってくる・・・・、
ということになります。
では、
F8キーを押して、
「Debug.Print 1 > 2 」
を 実行してみましょう。
★ 実行前にすでにウォッチウィンドウにて判明していた「False」という「値」が、
(すなわち、「1 > 2」の答えが、)
プログラムの実行によってイミディエイトに表示されたと思います。
・・・・というわけで、
またもやいろいろゴチャゴチャと書いてしまってすみませんでしたが、
ウィッチウィンドウは、このような感じで使ってみます。
いつでも、どこでも、何もまだ実行していなくても、F8キーでのステップイン実行中なら、ドラッグして放り込めばいい。
あるいは、右クリックして「ウォッチ式の追加」でもOK。
F8キーを1回押しただけの段階でも、指定した式の、多くの式の答え(値)や型がわかる。
また、放り込んだ式の修正は、(前号でやりましたが)そのまま「直接修正」もできる。
・・・ということになります。
ちなみにですが、「演算子」のことですが、
これまで何度も同じことを言ってますが、ここでも一応、言っておきます。
(ここでは比較演算子のことだけ・・・)
「>」や「<」、「=」などの比較演算子は・・・・、
・比較した結果が正しかったら「True(ピンポーン!あたり!)」を返し、
・比較した結果が間違っていたら「False(ブブー!ハズレ!)」を返す、
・・・・そういう・・・・
「記号1文字のくせに」、
でも、生意気にも、
(というか素敵!粋!にも)
「メソッドのような動きをする」、
そういった高度なことをする「命令」・・・・、
(すてき!)
です。(「>=」や「<>」など、1文字ではないモノもありますが。)
==============================
今回は以上です。
==========================================================================
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------