★独学者が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の「実情」が少しずつ分かってきた頃から、そしてこの質問と回答に出会う前からずーっと、「騙されてた」と、いつも感じていることでした。
それを明確に指摘してくださっていたこの回答者の方に、本当に感謝しています。
「自分の感覚は、やっぱり間違ってはいなかったんだ」と少し自信が持てました。

  

★2022/08/31追記 同じ方のさらに素晴らしいご回答
  
【クラスかオブジェクトか?】

↓この回答も本当に素晴らしいです!このQ&Aサイトで、唯一、正しい回答ができる方です。このかたよりも正しい回答をする人は、このカテゴリには一人も居ません。
  
VBAの勉強はプログラミングの勉強になりますか?→「正しく学べば Yes なのですが、間違った学び方をすると No と言えます。」 』(2023/01/18 追記)
  
超重要な引用
『 書いて動かせるならいいんじゃないの?と思いますか?
マクロの作成が目的なら「それでもいいかもね」と言えるかもしれませんが、プログラミングの勉強をしたいのであればその答えは「だめでしょ」です。
先ほども述べた通り、ライブラリの学習中心の学習法はプログラミング技術の向上にほとんど役立たないからです。 』

更に追加!!
超重要!!VBAを「真のプログラミング」として学ぶために。
他の言語にも移行しやすく学習するために!!!
その学ぶべき項目です。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10269473375

追加02

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11256458316

  

以下、https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10269473375 からの「学習項目」の引用です。

定数
変数
データ型
演算子とオペランド
数値の加減乗除と余り
文字列操作
日付の操作とシリアル値
時刻の操作とシリアル値
比較演算
論理演算
条件分岐
If
Select Case
繰り返し
Do Loop While
Do While Loop
For Next
For Each
(Until は不要)
配列
構造体
値型と参照型
メソッドの作り方
Sub
値渡し、参照渡し
Function
参照型の戻り値
変数のスコープ
アクセス修飾子
Private
Public
Friend
クラス
メンバー変数
インスタンスメソッド
インターフェイス
インスタンスと生存期間
is-a 関係
has-a 関係
集約
クラスとインターフェイスの継承
インターフェイスの実装
コンポジット
アップキャスト
動的ポリモーフィズム
イベントの作成と呼び出し
イベントハンドラの実装
ファイル入出力(テキストファイルの読み書き)
基本ライブラリ
Scripting runtime ( Dictionary, FileSystemObject )
ADO (ADODB.Stream)
静的クラス
クラスメソッド
アルゴリズム
リスト
ツリー
ソート

今回は以上です。
  

==========================================================================

バックナンバー目次とサンプル号

★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):~バックナンバー~

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