★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0017:VBAで小数計算ミスをしないようにするために-02 ~ ウォッチウィンドウの使い方01VBAで、直書きの数字や式の型を調べる方法(エラー回避の基礎)
バックナンバー目次ページは→こちらです。
まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
Vol.0017
タイトル:VBAで小数計算ミスをしないようにするために-02 ~ ウォッチウィンドウの使い方01(計算時の「直書き」の数字がどんな型になるのかを調べる。初心者がエラー解決時に見落としがちなところ・盲点。)
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
前回、ローカルウィンドウにて・・・、Variant型変数への値の代入において・「勝手に型が内部変換される」ということの、状況チェックの方法を少しお話ししました。
なので、ついでに、「ウォッチウィンドウ(ウォッチ式)」の扱い方も少しお話ししようと思います。
「ウォッチウィンドウ」は、VBAにて、「表示→ウォッチウィンドウ」で、ローカルウィンドウやイミディエイトウィンドウの付近に出てきます。(↓以下のURLの図をご参照ください。)
「ローカルウィンドウ」は、プログラムが進行するその「途中」において、「変数」の「現在の状態」について調べたいときに使うモノでした。
特に、
「変数」の「型」が、
「意図したもの」・「意図した型」にちゃんとなっていて、
「型のリレー」がしっかりなされているか・崩壊していないか?
などを調べるときに使う、とっても重要なモノ、でした。
それに対して「ウォッチウィンドウ」は、変数ではなく
「プログラムに直書きした個々の生データ(特に数値など)」
や、
あるいは
「数式、オブジェクト式、その他の各種の式」
(x+y とか、ActiveSheet.Range("××")とか、If ×××× Thenの ×××× とか)
が、
「どんなデータ型に勝手に変換されたか?」
「Excelがどんな型に勝手に変換したか?勝手に認識しているか?」
「どんな値を返すか」など
を調べるときに使います。
(※「生データ」のことは、「リテラル値」と呼ぶこともあります。ただし、「文字ベースのデータ=数値や文字列、日付など」の場合でしか、そう呼ぶことはありません。「オブジェクト」がらみのことには基本、「リテラル値」は存在しません。)
なんだかんだ書きましたが、
結局のところ、ローカルウィンドウの場合と基本的には同じです。
つまり
「調べる対象のモノ」が、
「意図したもの」・「意図したデータ型」にちゃんとなっていて、
「型のリレー」がしっかりなされているか・崩壊していないか?
などを調べるときに使う、とっても重要なモノ・・・・、
そこが「同じ」
ということです。
異なるのは、
その「調べる対象のモノ」が、
「変数」か、
それとも
「個々の生データ」や「プログラムに直書きし各種の式や計算の答えなど」か、
と・・・、
その違いだけ・・・
みたいな感じです。
もちろん、調べられるのは「単に」「型」だけではなく、
たとえば調べる式などが、
・「数値を使った演算(四則演算)」の場合なら、
・「その答えの値やデータ型」
もわかりますし、
逆に、
・計算に使ったすべての、「バラバラの・個々の」「数値や語句」の
「現在のデータ型」などもわかります。
そのほか、
・「>や<や = などの記号を使った”比較 ”の式」の場合なら、
その式が「Trueか(ピンポーン!アタリ!か)、Falseか(ブブーッ!ハズレ!か)」
ということもわかります。
*************
※補足
VBAプログラミングの場合の「式」とは、「算数・数学と違って」、
『 数値を、+、-、×、÷、の「四則演算」をしたモノだけ 』
のことを言いません。
それらのほかにも、
・ある値とある値を等号や不等号を使って「比較」したモノや
・「関数」と呼ばれるモノを使ったモノや
・「オブジェクト」と呼ばれるモノを「文字のかたち」で表現したモノ(=オブジェクト式)、
・「ただの数字、文字列(=リテラル値など)」
なども「式」の範疇に入ります。
(※そう断言していいかわかりませんが、ウォッチウィンドウを見ると、どうやらそういうことのようです。)
*************
・・・・というわけで、「ウォッチウィンドウ」では、ローカルウィンドウとは異なり、
「単語ひとつひとつ」
「数値ひとつひとつ」
「計算の答え」
「計算や比較などの各種の ”式” の答え」
「いろんな式が表すもの」
の、
「型」や
「答え」や
「現在値」、
「Trueか(ピンポーン!アタリ!か)、Falseか(ブブーッ!ハズレ!か)」
そして、繰り返しになりますが、
「特に」
「変数に入ったデータ」
「★ じゃない!!!!」
「★ それ以外の!!!!」
「★ 直書きしたデータなどの!!!!」
「データ型」、
を調べられるので(=逆に、「変数じゃないのにもかかわらず」、調べられるので)、
とっても便利です。
それが調べられると、
プログラムのなかの、
「型のリレー」
において、
「Excelに勝手に、異なった型・自分が意図しない型に変換されて、エラーの温床となっていないか?」
あるいは
「自分の勘違いや勉強不足のせいで、変な型の指定・変な型のリレー・間違った型のリレーをしていないか?」
なども、とても調べやすくなりますので、本当に便利です。
(※「変数に入ったデータ」「★ じゃない!!!!」「★ それ以外の!!!!」・・・・、と書きましたが、実は、変数や配列に代入されたものの値や型も、ローカルウィンドウと同じように、チェックできます。
ローカルウィンドウは変数や配列なら何の指定や操作もせずに「自動で」調べられますが、ウォッチウィンドウは調べたいモノをドラッグやクリックなどで「手動で指定しないといけない」という手間がかかります。
なので、変数以外のもの(値や式)についてだけをウォッチウィンドウで調べる・・・というパターンが多いです。)
「オブジェクト」のことをまだ学んでない方にとってはちょっと話が飛躍してしまいますのですみませんが、
さらには、
「オブジェクト式」を「ウォッチウィンドウでのチェック対象」に指定すれば、
・「そのオブジェクト式が表現しているオブジェクトの型(総称型や固有型など)」や、
・「そのオブジェクトの中の一部のプロパティ項目」の「現在値」も、
わかります。
(※オブジェクトのことをまだ学んでない方にはすみません!ひとまずは、「ふーん。そういうものなんだ~」くらいでいったんスルーしてもよいです。
が!!!、オブジェクトの勉強をしたら、絶対に読み返してほしい箇所でもあります。
というのも、「このことを知っている・知らない」がエラー解決したい時や、知りたい情報がWeb検索や市販書籍では見つからない時、などに、「有効」「超重要」ですので。)
同じことは「ローカルウィンドウ」でも分かることは分かりますが、
ローカルウィンドウの場合は、
「オブジェクト変数にオブジェクトが代入された場合でしか」、
わかりません。
それに対して、ウォッチウィンドウでは、
「オブジェクト変数にオブジェクトが代入されていなくても」
「オブジェクト式のまま」、
「オブジェクト式全体」でも、
「部分オブジェクト式」でも、
「もちろん式だけじゃなくて変数でも」
その型や、各種プロパティ項目の現在値が分かります。
そこが、ローカルウィンドウとは異なります。
ちなみにですが、
「でも、じゃあ、全部ウォッチウィンドウでできるわけでしょ?なら、全部ウォッチウィンドウでやればいいじゃん!」と思うかもしれません。
が、
「変数」は「プログラミング」のスタート地点でもある
ので、
そこは、
「変数は変数だけに」
「分かれていた方が」、
「変数は変数だけに」
「まとまっていたほうが」、
「スタート地点のことはスタート地点のこと ” だけ ” に」
「まとまっていたほうが」、
「かえって」
「チェックがしやすい」
「比較がしやすい」
ので、
やはり両方を使うほうが、
「現実として」
「見やすい」
「やりやすい」
です。
「何いっとんじゃコイツ!だらだらと」と思うかもしれませんが、多分、実際にエラー処理でウォッチウィンドウとローカルウィンドウを同時に使ってみていただければご理解いただけると思います。
なお、ローカルウィンドウでもウォッチウィンドウでも、
「オブジェクト」をチェックする時は、
「各種プロパティ項目の現在値を見ることができる」のですが、
ただ、
そのプロパティ項目は、
「すべての項目」が見れるわけでは「ありません」。
↓それをはじめて僕が知ったモト記事がこちらです。
https://excel-ubara.com/excelvba4/EXCEL266.html
ここの、
「いきなり、普通に良く使うAddressがローカルウィンドウにありません。」
という箇所に書いてありますので、
Ctrl+Fキーで
「いきなり、普通に良く使うAddressがローカルウィンドウにありません。」をコピペして
ページ内検索をして、是非読んでみてください。
ウォッチウィンドウでもローカルウィンドウでも、
「オブジェクト」の「各種プロパティ項目」をチェックする時は、
「引数」を「持たない」プロパティ項目「だけ」、が見れます。
(※さらに他に見れないモノ=例外があるかもしれませんんが)
逆に、「引数」を「持つ」プロパティ項目は、その値を、「見れません」。
このことは是非、知っておいてください。
ただ、それでも「いろいろなこと」がわかります。
階層構造の理解にも大変役立ちます。
ウォッチウィンドウもローカルウィンドウも、とても役に立ちます。
この2つを使えないで、Web検索ばかりに頼っていると、大変残念ながら・・・
「VBA的には」
「バカ」
「のまま」
「一向に上達しない」
・・・という状態になってしまいます。
上達しない人の恐らく100%が、
「ウォッチウィンドウとローカルウィンドウ、また、イミディエイトウィンドウを使えない」
「存在すら知らない」
あるいは、
「早く答えが欲しくて」
「知ってても面倒くさがる」
と思います。
早く答えがほしいのに、逆に絶対にそれができない状況に追い込まれる。
あるいは、
自ら進んでそっちの方向に行ってしまう、
のです。
「ExcelVBAのことなんてWebで調べれば全部出てくる」という
「ウソ」
を信じてしまい。
「答えだけがほしくて」
「答えだけを欲しがって」
「なぜそうなるか?」
「をすっとばす」
「悪いクセ」
が付いてしまい、
「いつまでたっても
「応用が利かない」
「応用ができない」
「VBA的には」
「バカのまま」
に成り下がってしまうのです。
「負けから何も学ばない」
「勝ちだけが欲しい」
「負けを隠したい」
「ニセモノ野郎」
と同じ、
ということになってしまいます。
それでは、一生、「腕が上がらないどころか
「お金を払っているのに」
「4流以下のバカ講師にカモられ続けるだけ」
「テキトーな内容のウソ本にカモられ続けるだけ」
になってしまいます。
どうか、ぜひ、ウォッチウィンドウとローカルウィンドウ、また、イミディエイトウィンドウを使って、色々と調べるクセをつけてください。
それらを使って、
「無駄とわかっていてもWeb検索の前に一応調べてみるクセにする」とか、
それらを使って、
「データ型」のこと、「データ型」の「現実・実際」を「少しでも深く知る・調べる」とか、
それらを使って、
「その型のリレーその他が正しくなされているか?」の「チェック」をする、
ということのほうが、
「気づき」が、
「圧倒的に多く」、
「Web検索なんかするよりも」、
「明らかに」、
「上達」の早道、
です。
「ExcelVBAのことなんてWebで調べれば全部出てくる」というのは
「半分本当」ですけど、
「残りの半分は完全にウソ」
なのです。
テキトーな奴が、テキトーなこと言っているだけにすぎません。
そんな口車に乗せられてはいけません。
ウォッチウィンドウとローカルウィンドウ、また、イミディエイトウィンドウ、
そして、ひいては、「ヘルプとオブジェクトブラウザ」が扱えねば、
Web検索だけでは上達できません。
(また、記事のウソも見抜けないし。
Webには僕のように、いい加減なこと書く奴、いっぱいいますから。)
※補足
「引数」→「答え」を出すための、そのモトとなる個々のデータのことです。
たとえば、「x+y=z」 という数式の 場合なら、z は「答え」にあたり、
xとyが「引数」にあたります。
「関数」と呼ばれるモノの場合、関数はよく「自動販売機」にたとえられますが、
例えばジュースの自動販売機なら、ガコーン!と出てくるジュースが「答え」で、
「小銭(100円や500円などの硬貨)やお札」が、「引数」にあたります。
・・・といいつつ、僕も詳しいことはわかっていませんので、奥深くを知りたい方はプロのちゃんとした講師の方に聞いてみてください。
では、以降で、少しずつ、基本的な使い方をご紹介していきます。
※ https://excel-ubara.com/excelvba1/EXCELVBA488.html も必ずご参考に。
==============
まずは、Alt+F11などでVBEを開いて、
以下のコードを任意の標準モジュールにコピペしてください。
Sub test0001()
Debug.Print 2900 * 0.3
Stop
End Sub
コピペできましたら、VBEの「表示→ウォッチウィンドウ」にて、ウィッチウィンドウを表示します。
で、表示できたら続けて以下のように操作してください。
(01)プログラムの中の「2900」をダブルクリックします。2900が自動選択されます。
(あるいはドラッグで手動選択します。)
(02)その選択されたまま、「2900」をウィッチウィンドウに更にドラッグします。
参考図→
(03)ウォッチウィンドウに「2900」の内容が表示されたことを確認します。
参考図→
(04)「0.3」をドラッグで手動選択します。
(05)「2900」のときと同様に、「0.3」を選択された状態のまま、ウィッチウィンドウにドラッグします。
(06)「0.3」と「2900」が、ウォッチウィンドウに追加されていることを確認します。
参考図→
以上が完了したら、「F5」キーを押してプログラムを実行して下さい。
「Stop」の行が黄色くなって一時停止します。
下図のようになります。
で、まず「0.3」のほうですが、
「式」の列に「0.3」
「値」の列にも「0.3」
「型」の列に「Double」
とあります。
これは、まず、
「式」は「0.3」ですよ~!( x とか y とか何も無くて0.3だけ、で、んでもって)、
「値も」「0.3」ですよ~!
という感じの意味です。
かつ、
その「0.3」のデータ型は、
「Excel側で ”勝手に ”Double型に自動設定させて頂きましたよ~!」という意味になります。
※ここで「一般的かつ常識的な感覚」と異なるのは、
「0.3」といったように、
「たとえば × や ÷ といったような記号が付いていなくても」
つまり、「数字だけ」であっても、
「Excelはそれを ”式 ”とみなす・・・・」、という点です。
この、「式も値(答え)も 0.3 」っていう感覚は、数学にはあまりない感覚だと思います。
「 a = a + 1 」みたいな命令文もそうですが、このように、プログラミングには「数学と似て非なる感覚」がちょいちょいあります。
おぼえておいてください。
ちなみに、
「 a = a + 1 」は、
「その直前までの a に代入されている値に1をプラスした数字を」、
「 a に代入し直して新しく変えちゃって!」
という意味です。
つまり、
「古い変数 a の値に1をプラスして、a の中身をその新しい値で上書きしちゃって!」
という感じの意味になります。
話が逸れてすみません。
戻します。
同様に「2900」のほうは、
「式」は「2900」ですよ~!( x とか y とか何も無くて2900だけ、で、んでもって)、
「値も」「2900」ですよ~!
という感じの意味で、
かつ、
その「2900」のデータ型は、
「Excel側で ”勝手に ”Long型に自動設定させて頂きましたよ~!」という意味になります。
で、このとき、
「Excel側で ”勝手に ”データ型を ××××型 に自動設定させて頂きましたよ~!」
というところが重要で、
これはつまりウラをかえせば、
「★ 俺様(Excel様)がせっかく設定してやった ××××型 を無視すんじゃねえぞ?
無視して、ほかのデータ型となんかヘタしやがったら、エラー出してやるからな!
誤作動もさせてやるからな!!
忘れんじゃねえぞ!!!オラ!!!」
と「Excel様が言っている」という意味でもあります。
※ユーザーからすれば、データ型を「勝手に変換しやがって」ということなのですが、
Excel側からすれば、「俺様がせっかくやってやった」という感じになります。
なので、このように、ことあるごとにウォッチウィンドウで、
「Excel様がデータを何型に勝手に変換しやがるか?」
をチェックすることは、とても重要です。
特に、エラーや小数計算ミスの回避、エラーの出ない誤作動の原因チェック、などにとって、すっごく重要です。
言い換えますと、
▼「生データについては、Excelが勝手にデータ型を決めやがる」
(Variant型の変数に代入した値の場合も同様ですが)
という特性を知ってないと、
▼「で、ウィッチウィンドウじゃないとそれが確認できない」ということも知っていないと、
▼「ローカルウィンドウじゃアカン!確認できない!」ということも知っていないと
▼「1分で解決できるエラーを、何日たっても解決できない」
▼ という事態に「ハメられる」ことになり、
▼ おまけにそれが、「一向に減りません」。
本当にご注意ください。
意味が分かりましたら再度、F5キーを押してプログラムをいったん最後まで実行しきっちゃってください。
実行が終わります。
では、ここでもうひとつ、「式」を追加しましょう。
「2900 * 0.3」をドラッグで手動選択して、それをそのまま、ウォッチウィンドウにドラッグします。
ウィッチウィンドウに
「0.3」の行、
「2900」の行、
「2900 * 0.3」の行、
の、3つの行ができていることを確認します。
確認出来たら、再度、F5キーでプログラムを実行します。
で、「0.3」と「2900」は前回と同じなので、新たにできた「2900 * 0.3」の行、を見てみます。
「値(計算の答え)が870」
で、
「データ型がDouble型」
になりました。
これはExcelが
「2900 × 0.3 の答えは、Long型×Double型で、870、
で、データ型は勝手にDouble型にさせてもらったぜ?
小数点以下の数字が無いからといって、勝手にLong型にはしないぜ?
当然、Integer型にもしないぜ?
Double型にしたぜ?
んでもって、
お前が勝手に他のデータ型の数字となんかやって
ヘタ打ってエラーになっても俺は知らねーぜ!
テメーでなんとかしろや!
わかったか!オラ!!」
と言っているのと同じです。
もしこのとき、
『 勝手に「0.3」をDouble型にしやがって! 』と、
そうなるのが嫌だったら、
例えば
「Debug.Print 2900 * 0.3」
を
「Debug.Print 2900 * 0.3@」
という風に書き変えます。
つまり、
「0.3に例えば @ を付けて」
「強制的に 0.3 を Currency型=通貨型」
にさせます。
そのあと、
「0.3@」
をドラッグで手動選択し、
ウォッチウィンドウにドラッグ追加します。
▼ ※ 式を変えたら、変えたものを必ずウォッチウィンドウにドラッグ追加します。
でないと、前回の式を見てしまい、「変わってない!」と錯覚して
誤った判断をすることになってしまいます。
あるいは、ウォッチウィンドウの上で直接書き換えます。(下図参照)
「式」の列で、目的のものをダブルクリックすると、
(or いったん行を選択してから目的のモノをシングルクリックすると)
直接書き換えることができるようになります。
書き換えが完了した瞬間、型などの表示内容が変化します。
で、F5で実行すると、ウィッチウィンドウで
「0.3@」のデータ型や
「2900 * 0.3@」のデータ型を、確認できます。
この場合、ウィッチウィンドウの中に「0.3」だけのほう(行)も残っているので、
「0.3」と書いてあるだけだと「Double」なんだけれども、
「@」を付け足して
「0.3@」にすると、「Currency」になる、
ということも「明確に」分かると思います。
なお、「★超重要・注意事項」ですけど・・・
前号や前々号で、
「0.3」をSingle型にして2900と掛け算してしまうと少数の誤差が出ました。
Sub test99()
Dim aaa As Single
aaa = 0.3
Debug.Print 2900 * aaa
End Sub
というプログラムを書くと
イミディエイトウィンドウに
「870」
ではなく
「870.0001」
と表示されてしまうというアレです。
でも今回のサンプルコードでは、Excelが「0.3」をSingle型にせずにDouble型に自動変換してくれたので、少数の誤差は出ませんでした。
でも、だからと言って「Double型なら少数誤差が出ない」と考えるのは間違いです。
どこかの号で前述したWebページを「必ず」もう一度見てみてください。
(https://excel-ubara.com/excelvba4/EXCEL_VBA_427.html)
Double型でも何かの時には少数の誤差が出ます。
もちろん、Currency型でも誤差が出ないとは言い切れません。
少数以下4桁まで、という制限付きです。
結局、コンピュータは「安直に」少数計算してしまうと誤差が出る「不良品」なのです。
特にプログラマ目線ではなくて一般ビジネスマン目線で言えば。
プログラマなら「2進数、16進数なんだからあたりまえだろ?」ということになるのかもしれませんが、ビジネスパーソン目線では「 ” 小数を扱うならまずはSingle型でいい ” とちょいちょい本やWebに書いてあるのに、2900 × 0.3 もまともに計算できないとは・・・」ということになります。
参考URL
引用:「このように、小数点以下の数値を扱う変数は単精度浮動小数点型(Single)を使います。」
http://officetanaka.net/excel/vba/variable/03.htm
↑このように「無条件に」「TPO考えず」「但し書き」せずに、「Single型で」、と書いてある本がちらほらあります。ここは単に古い記事だから直し忘れているだけなのかもですけど。(でも「良くない」のは事実ですが・・・。)
ちなみにですが、ExcelVBAに限らず、VBAの古い昔の本にはいい本が多いのですが、でも、Single型を薦める本も多いかもしれませんので、特に要注意です。
こちらのように「Singleを使えば演算誤差が出ないといった乱暴な意見を見かけることもありますが決してそのようなことはありません。(引用)」と書くべき注意事項なのです。
しかし、ここで騙してくる人が居ます。
「Variant型信者」という「専門バカ」です。
「Variant型の場合、少数を持つ数値を代入すると、基本的にはその場合はDouble型に自動的に内部変換される」
ということがあります。
そのことをもって
『 “たまたま”、Double型で少数誤差が出ない計算ができただけのときに 』
「ほら!Variant型なら少数誤差が出ない!変数なんて全部Variant型でいいんだよ!」
と言ってくるバカがいます。
同じことをもう少し詳しめに書くと、
そのことをもって
『 “たまたま”、Double型で少数誤差が出ない計算ができただけのときに 』
(たとえば前述の 2900 × 0.3 で、0.3をSingle型ではなくDouble型で計算した場合などに)・・・・
「ほら!Variant型なら(小数は内部で自動的にDouble型になるから)少数誤差が出ない!変数なんて全部Variant型でいいんだよ!」
と言ってくるバカがいます。
でもそれは「たまたま出てないだけでいつ出るかなんて誰にもわかりません」。
どうか「Variant型信者」という「専門バカ」に騙されないようにご注意ください。
今回は以上です。
ゴチャゴチャ書きすぎて、かえってわからなくなってしまったらごめんなさい。
*********************
※蛇足だけども超重要・かつ・超長い・補足
「何いっとんじゃコイツ!だらだらと!」と思うかもしれませんが・・・云々・・・と書きました。
ちなみにですが、大変失礼ながら、「何いっとんじゃコイツ!だらだらと。余計わからんわ!」と「安直に」考える人は、「決めつけ、思い込みをして、実際に調べない」人が多いので、基本、プログラミングやエラー解決作業には向いていません。
今回の話とからめますと、例えば
『 ローカルウィンドウやウォッチウィンドウで調べる手間を、惜しんでしまって、それをやろうとしない人 (Webを調べることはすぐにするけど、というかそればっかりで)』
『 ローカルウィンドウやウォッチウィンドウの扱いに興味がない人 』
『 ローカルウィンドウやウォッチウィンドウの扱いを知りたいからどんな情報でも読みたい!と「ならない」人 』
のことです。
『 急がば回れ、という言葉を理解できない、Web検索しかしないバカ・余裕のないバカ 』
とも言うかもしれません。
「自分で調べず、すぐに他人に答えを求めるだけ、答えがほしいだけ、基礎を身につけようとしない、あるいは、他人のせいにするだけの人」、が多いです。
ぜひ、そんな人間にはならないで欲しいなと願います。
結局彼らは「何いっとんじゃコイツ!だらだらと」とか言っちゃって「俺様はアタマがいいんだ!」と暗にマウントしたいだけなんだと思いますけど・・・。
でも結局「ケアレスミスが減らないバカ」に成り下がるのです。
多分、AmazonのVBAの本のレビューをエラそうに上から目線で書いて、「しかし、間違ったこと書いてる」人や、「こんな書き方じゃあ全然わからない」とか書いている人に多いですね。おそらく。
意外と少なくないです。
(「わからない」んじゃなくて、「わかろうとしない」んですよね。「あー、多分筆者はこういうこと言いたいんだろうな・・・・伝わりにくいけど・・・・」と推測する「脳を」「持っていない」のです。かわいそうにと思います。わからないなら(わかろうとしないなら)レビュー書く資格なんてないので別の自分好みの本読めばいいのに。
普通の初心者の方が「本当に分からなかった。この本を読む段階に自分が達してないとダメみたいです・・・」といった感じでレビューに書くのはいいですけど。)
もちろん僕も「いつまでたっても」「ケアレスミスが減らないバカ」ですけど、でも彼らは「そこから更に」が違います。
「そんなの自分で調べろよ」ということすらしようとしない「バカ」にも成り下がります。
さらには「Webには答えがある」とバカのひとつ覚えでWeb検索ばっかりして、「バカなくせに自覚しておらず」、自分は頭ががイイと錯覚し、でも結局「ヘルプとオブジェクトブラウザを扱えない」・・・
そんな「バカ」にも成り下がります。
ローカルウィンドウやウォッチウィンドウで調べれば30秒か1分で解決するエラーを、Webに答えがあると考え違いをして、「Webを数日もさまよう(そして答えが見つからない)」という「典型的」な「バカ」に成り下がります。
結論を言ってしまうと、
VBAで「ヘルプとオブジェクトブラウザを扱えない」人や、
「ヘルプとオブジェクトブラウザを扱う方法を初心者に教えることができない人」や
「ローカル/ウォッチウィンドウの重要性、型の重要性を初心者に教えることができない人」は、
講師だろうがカリスマだろうが何だろうが、全員、もれなく、「バカ」なんです。
エラそうなことは言ってはいけません。
VBAの学びを阻害するのは、「エラそうにすること」や、「俺様はアタマがイイ」という錯覚、「短く簡潔に言えることだけが正義」などの錯覚、です。
逆に、エラそうなこと言ってるヤツに言ってみてください。
「あんた、ヘルプとオブジェクトブラウザ、初心者にでもわかりやすいように教えられるか?」
って。
「あんたならそれやるのにどんな資料をそろえる」?って聞いて、「コンマ秒」以内で、
「これとこれとアレ・・・」と答えが無かったらソイツは「バカ」です。
言うこと聞く必要ありません。
僕ら素人はバカを自覚して、素直になって、「でも、あえてでも、冗長でも、バカと言われても、色々やってみて、間違っていたとしてもいったんはハラ落ちさせて、自分の言葉に変換する」という作業を怠ってはいけません。
(間違っているかもと思うから、さらに、深く、学ぼうとします。)
もちろん、僕の言葉が「良い」とは言っていません。
ダメな部類なのは自覚しています。
でも、どうか、他人をバカにせず、上から目線にできるだけならず(超難しい)、他人から素直に学ぶ、他人の受け売りではなく、ご自分の言葉で語れるように、「ヘルプとオブジェクトブラウザを扱えるように」、理解を深めてください。
ほんと、
(ヘルプもオブジェクトブラウザも扱えないくせに)
(まさかのローカルウィンドウやウォッチウィンドウすら使ったことがないくせに)
(Web検索しかできなくせに・Web検索しかしたことないくせに)
「そんなことはもう知ってる!そんなことを知りたいんじゃないんだ!と、さも自分は ” アタマがイイ! ” 」とでも言いたげな、
そして、
「教えてもらう立場のくせに」
「結論だけ先に言え!」
「短く簡潔に言え!」
「ダラダラ無駄なこと書いてんじゃねぇ!」
「お説教はたくさんだ!」
と「だけ」(しかも上から目線で)しか言わない、
「安直に答えだけしか欲しがらない」
「安直に勝ちだけしか欲しがらない」
「苦労せずに答えや勝ちだけをヨコドリしたいだけの」
「負けから何も学ばない」
「ニセモノ野郎」
に成り下がらないよう気を付けてください。
※「お説教はたくさんだ!」とかいう奴に限って、自分はお説教するんですよね~。
あるいは「俺に言わせれば~」とか、始まっちゃったりして。
「俺に言わせれば~」をいう奴にロクな奴はいません。
「お説教はたくさんだ!」なんて言うってことは、
自分がいつもやってる説教(理論)が誰かに否定されるのが「怖い」から
カモしれませんね~。
※蛇足だけども超重要・かつ・超長い・補足・・・終わり。
==============================
今回は以上です。
==========================================================================
バックナンバー目次とサンプル号
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
----------------------------------------------------------------------