★独学者が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を爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):~バックナンバー~

----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------