★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0034:なぜあなたが「いつまで経ってもVBAが上達しないのか?」
バックナンバー目次ページは→こちらです。
まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
Vol.0034
タイトル:なぜあなたが「いつまで経ってもVBAが上達しないのか?」
バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
今回は超短いです。
(メルマガのほうは短かったけど、つい、付け足して、長くなってしまいました)
でも、すごく大切なことを書きます。
ただ、今まで何度も言ってきたことなので、うんざりしてしまう方もいらっしゃると思います。
なので、「あ?、またそれね。はいはい。」となってしまうかもしれません。
その際はどうかご容赦ください。
でも、繰り返しますが、
「VBAを上達させたいなら」
「すごく大切なこと」
です。
・・・・で・・・・。
なぜあなたが「いつまで経ってもVBAが上達しないのか?」
そのことについて、前回の内容とからめてお伝えしたいと思います。
まず、前号で、以下のように書きました。
================================
例えば、ExcelVBAの命令だけに限って言えば、
・演算子、
・各種VBA関数(Excel専用、Office共用、など、いろいろ)、
・WorksheetFunctionオブジェクトのメソッド、
・プロパティ、
・メソッド、
・ステートメント名(ステートメント用の「キーワード」)、
・API、
などなど・・・、
のカテゴリがあり、
そしてこの Excelの場合だけでも、合計で「1000個以上」の命令単語があります。
が、それらの命令単語はそのように、様々にカテゴライズされて、
『 使うシーン・操作対象・書き方は異なりますが 』、
でも、
「基本的には」「すべて」「以降の(a)~(e)の5つの自作関数の動き」の、
「どれかにあてはまります」。
使うシーン・操作対象・書き方(構造)が異なるので「呼び方が異なるだけ」・・・。
「本質・動き、は全部同じ」、と思ってください。
では、以降、その(a)~(e)の、5つの動きです。
(a)「一般データ」を返すこと「だけ」しかしない自作関数(=オブジェクトは返さない)
(b)「何らかの動き」をしつつ、同時に、「一般データをも返す」自作関数
(c)「オブジェクト」を返すこと「だけ」しかしない自作関数(=もちろん一般データは返さない)
(d)「何らかの動き」をしつつ、同時に、「オブジェクトをも返す」自作関数
(e)何も返さずに、「何らかの動き」だけをする自作関数
================================
1000個以上の命令単語のうち、その7割以上が、この5つの動き、のなかの「どれか」にあてはまります。
もう少し詳しく(?) 言うと、
『 すでに最初から組込まれている命令の7割以上 』が、自作関数のこの5つの動きと、同じ動きをします。この5つの動き、のなかの「どれか」にあてはまります。
ということは、この5つの動き、は、とても「重要」なものです。
なぜ、「いつまで経ってもVBAが上達しないのか?」
それは、
日本の「VBAの書籍や動画の」、「ほぼ100%」が、
「この本当に重要な5つの動き」をする「自作関数」について、
そのなかでも特に、
「 (c)と(d)について 」、
「一切まともに教えていない」
から、
です。
Amazonで探しても、(c)と(d)のことについて「ちゃんと」書かれた本は、
「1冊も」
「ありません」。
また、(e)についても、
「そもそものステートメントの意味」
「式と評価、返す、の意味」
「制御フロー系 ” 以外 ” の、ステートメントについての解説」
などが「超」「テキトー」です。
これでは、「上達できるほうが」「おかしい」です。
なので、今の日本でVBAが「上達した」とは、
ほとんどの場合、
「勘違い」です。
そう思い込んでいるだけです。
「錯覚」しているだけです。
思い上がりと言っても過言ではないと思います。
その証拠に、
「クラスモジュールの作り方」を
その仕組みを、
カンタンな説明から詳しい説明まで、図解で分厚く説明してくれる本も、
「日本には」、
「1冊も」
「ありません」。
というか、
「プロシージャ」の性格や作り方さえ、
「ヘルプにもとづいて」
「まともに解説した本は」
「1冊も」
「ありません」。
(c)と(d)だけでなく、
「(a)や(b)についてすら」
「まともに解説した本は
「1冊も」
「ありません」。
「上達した」とは、
「最低限」、
「カンタンでいいので、とりあえず、クラスモジュールが作れること」
です。
※プラス「SQL」も分かることです。
※その前段階として「プロシージャとその作り方」も死んでも欠かせません。
でもその本が、ない。こともあろうか、「1冊も」。
「クラスモジュールを作ること」は、
「超」
「難しい」
と思われているかもしれませんが、
実は
「そうでもありません。」
もちろん、「メッチャ簡単」
ではありませんが、
でも、
「メッチャ難しい!」
というわけでもないのです。
「5つの動き」、の自作関数が作れて、
オブジェクト階層構造やコレクションの位置づけなどが
理解できて入れば、
「カンタンなモノ」
であれば、
「比較的、誰でも、すぐに、理解できます」。
(古いですがバージョン2000のころの、「VB6」でのActiveX系=COM系のDLLの作り方も同じですし。)
「そもそも論」、ですが、
VBAでは、
「クラスモジュールこそが」、
「そもそものVBAの基礎」であって、
それがわかれば(=カンタンなものでもいいので実際に作ってみれば)、
「ああ、そういうことだったのか!」
「なんで先にこれを教えてくれない?」
と、必ず、なります。
「プロパティ=状態」
とか
「オブジェクト=操作の対象」
とかいうような、
「超」がつくくらい「いいかげん・テキトー」な説明しかしない
市販書籍の「カス」具合、騙し具合も、
「見抜ける」ようになります。
「その ”基礎 ” のことが分からない人が」
「VBAのことがわかるなんて」
「上達してる」だなんて、
「ありえない」
のです。
かといって僕も、クラスモジュールのことはほとんどは分からないのですが・・・。(^^)
カンタンなものがちょこっと作れるだけで・・・。
よって
クラスモジュールが作れないのに、
「自分は中級者だ」「上級者だ」
と思い込んでいる人は、
「勘違いも甚だしい」人、です。
(※ちなみに、僕はVlookup関数も使えないExcelVBA初級者です。Accessデータベースはバージョン2000のみ、多少は触ってきましたので、ExcelVBAの市販書籍やWeb記事などで、誰がどういうウソ言ってるかくらいはわかりますけど・・・。何テキトーなこと言ってんだ!とか・・・。VBAもAccessから入りました。っていうか、Excelなんてほとんど使ったことなくて、Excelは未だに関数もちんぷんかんぷんです。)
そして、
(c)と(d)は、
「クラスモジュールの理解」
にとっても、
「本当に重要」
です。
でも、
「講師たちは」
「誰一人として」
「まともに書籍や動画にせず」、
「教えてくれません」。
なぜあなたが「いつまで経ってもVBAが上達しないのか?」
これは全部、「習う側」のせいでは、まったく、ありません。
完全に、「教える側」の「せい」です。
「教える側」の「レベルが低すぎる」から、です。
「レジェンドといえど、20年以上も教え方をサボって変えていない、工夫していない」から、
です。
前述したような自作関数やプロシージャに関する「初級者も上級者も対象にした詳しい本」や「冒頭に挙げた5つの動きやヘルプに基づいた図解の豊富な詳細な本」が、
過去にも今現在にも、
「Amazonにも楽天にも、街の本屋さんにも、図書館にも」、
「どこにも」
「1冊もない。」
「もしくは1冊か2冊出てても、すでに廃版。」
ということは、
「Excelが世に出てこれまでの20年間以上」、
「どの講師も」、
「著者も」、
「編集者も」、
「PC雑誌ライターも」
「Webライターも」、
「出版社も」、
「サボりにサボって」、
「何も」
「してきませんでした」。
ということの証明です。
これは、
『 カンタンなレベルのVBAでお茶を濁して「わざと上達しないようにさせておき」、何度もカモれるようにしてきたのでは? 一定以上に教えなければ、生徒さんが成長することなんてあるわけないから、簡単なことばっかり教え続ければ良くて済み、同じ人をいつまででも、何度も、「ラクして」カモれるもんなあ・・・。まあ、たしかにそのほうが儲かるわなあ・・・。』と勘繰られても反論できないのでは?と、こっち(習う側・初心者側)が心配になるくらい、
「何も」
「してきませんでした」。
ということの証明でもあります。
「いや、そのことは別途セミナーで(お金たくさん取って)ちゃんと教えてる」と反論する人もいるかもしれませんが、
そもそも、
「そんな内容・そんな低いレベルで良しとしてる」から、
「そんな内容・そんな低いレベルの教習項目なのに、いちいちお金取っている」から、
「基本中の基本のプロシージャのことすら無料で教えず、お金をとっているから」、
つまり、
「本来無料で教えるべきことを教えずにサボっているから」、
日本のデータ管理の現場が
「20年前の状態のままと、(多少は良くなったにしても)大して変わってない」
「結局、VBAレジェンド野郎どもも、” エンドユーザーコンピューティングだ! ” なんて、息巻いて鼻息荒くして騒いでたくせに、結局は何のことない、絵に描いた餅だった」
ということになってしまったのだと思います。
「プロシージャの基礎を全部無料で教える」とか、
「オブジェクトモデル(階層構造の一覧図)の意味と重要さを全部無料で教える」とか、
「コレクションオブジェクトの階層構造の中での位置や役割など」とか、
「ヘルプやオブジェクトブラウザの読み方」とか、
そういった「無料で教えるべきこと」を、ちゃんと無料で教えていれば、
データ管理の基礎として、今ごろは、もっと、別途に、
「SQL」を教えるとか
「SQL」と「VBA」の「連携」を教えるとか、
クラスモジュールのことをもっと教えるとか、
実務と統計、現場と数字の因果関係の調べ方、など、
いろんなことを
20年前と比べて、2ランクくらい上のことを、
「初心者クラス」
で、教えることができてたはずです。
それならお金を払って習う意味があります。
もっと、日本のデータ管理の現場が、もっと効率が良くなってたはずです。
悪徳システム業者にも騙されにくいとか、
無知すぎて業者丸投げにしてしまい、かえってトラブルに巻き込まれる、などなど、
そんなことも、少しでも、減っているはずです。
でも、今現在は、「ぜんぜん」そうはなっていません。
むしろ、20年まえと、まったくいっしょ、かわってない、っていう感じかも?
というわけで、
私たち、「習う側」「初心者」にとっては
テキトーなことばっかり教えられて(時にウソも)、
ExcelVBAがらみの、「苦難」「受難」は今後もず~っと続くと思いますが、
でも、もし、そんな中、
VBAの上達
をしたかったら、
「5つの動き」「5つの自作関数」のなかの、
(c)と(d)を頑張って学んでみてください。
でなければ、
これまでExcelVBA教育業界で20年以上も続いている、
悪しき、
「省略」至上主義
(※=コードを「短く書ける」というだけのその知識を自慢したくてしょうがない主義
=初学者の立場・将来など、これっぽっちも考えず、
「俺こんなことも知ってんだぜ!」と自慢したいだけのご都合主義
※なくせに、「データ管理(集計や抽出)の世界標準の基礎」の
「SQL」のことなんて、「まるで」「知らなくて」、
(Excelは計算ソフトなのにも関わらず、「集計と抽出の基礎」に無頓着。
バカか?)
しかも、「学ぼうとすらしない」で、
データをカタマリとして処理したいときに、
「本来書かなくてもいい無駄なループコード」
ばかり書いている、というか、それしか書けない人。
それしか書けない講師、市販書籍著者、ライター、編集者。
なんの吟味も但し書きもしない安易な「省略」なんて、
「バカになるだけ」なのに。)
「VBAの真の基礎の ” クラスモジュール ” を絶対に無料で教えない」主義、
「VBAの真の基礎の ” クラスモジュール ” を有料でも教えない」主義、
「そもそも、プロシージャとクラスモジュールがVBAの ” 本当の基礎 ” だということすら、絶対に教えない」主義、
「 ” オブジェクト変数 ” をまったく教えずに、Withの多用ばかり教える」超バカ。クズ主義
※これって、単なる?それとも究極の?「ご都合主義」?っぽくも見えますね。
に、
僕たちExcelVBAの初心者は、
今後も(永遠に)振り回されつづけ、餌食になり、半ば、だまされ続けていくことになるでしょう。
※ちなみにですが、以前 Yahoo知恵袋で、VBAの基礎と、ExcelVBA教育業界の悪しき慣習について、ものすごく的確に回答しているかたがいらっしゃったので、URLをご紹介しておきます。
回答の中のプログラムの部分は飛ばしていいので、「以下モジュールについて。 vba にはモジュールが色々とありますが、定義しているものはすべてクラスです。・・・」以降のところを、「必ず」、「全部」、「読んで」、雰囲気だけでもつかんでください。
僕のこのメルマガの100万倍、素晴らしい!です!!
『 クラスモジュールについて教えて下さい。 』
↑ この質問の「ベストアンサー」の方です。
消えちゃうといけないので、テキストファイルなどに是非、
保存しておいてください!!
とくに・・・、
「しかし、大抵は逆の順序で学んでいるようです。おかしな学び方だと思います。 これはおそらくマクロの実装から始まったのが原因で、vba 業界の悪しき慣習だと思います。 」
というところも、必ず、前後の内容と合わせて、必ず、読んでください。
まさに、これが、僕がExcelVBAの「実情」が少しずつ分かってきた頃から、そしてこの質問と回答に出会う前からずーっと、「騙されてた」と、いつも感じていることでした。
それを明確に指摘してくださっていたこの回答者の方に、本当に感謝しています。
「自分の感覚は、やっぱり間違ってはいなかったんだ」と少し自信が持てました。
今回は以上です。
==========================================================================
バックナンバー目次とサンプル号
----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------
- 投稿タグ
- 「ニセモノ」への道, 「本物」に近づくために, AccessVBA, Accessの独学, Access操作の基礎, ADO/DAO, ExcelSQL, ExcelVBA, Excelの独学, Excel操作の基礎, Excel連携VBA, MicrosoftQuery, ODBC, SQL, パソコンでの自動化, ビジネスパソコンの基礎, ビジネス一般常識, マクロ, ワークシート関数, 独学, 自動化