★★★ Access2000VBA・Excel2000VBA独学~習う人間の側から見た、「生徒さんや独学する人の成長を邪魔してくる」、バカExcelVBA講師、バカExcelVBA著者、バカライター、バカ編集者の特徴~もちろん僕はもっとバカでカス・クズだけど、この人たちも相当バカ。日本のデータ管理を10年は遅らせてきた人たち~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。

  
  

★ はじめに

僕自身、現在、ExcelVBAの独学中です。

正直、Excelのことなんて「基本操作すら」まだわかってないし、超バカでクズ・カス、なんですけど、ExcelVBAを学んでいくにつれて、「講師や著者・編集者を名乗るに値しないバカたち」の「書くこと・言うこと・ふるまい」が少しずつわかってきたので・・・、

「こんな講師に習ったらバカを見る・お金をドブに捨てる。」
「こんな本や記事を信じすぎたら必ずドツボにはまるから注意。」

・・・という特徴を挙げていきたいと思います。

次項に挙げた、(01)~(2×)がそれです。

そのような人たちが、「データ管理の基礎のことを何も知らない・なんも考えないバカ講師・バカ著者・バカライター・バカ編集者」たちです。

このひとたちが、日本のデータ管理の現場を10年は遅らせてきた、その「元凶」だと思います。そして、今後の20年も、何も変わろうとせず、その悪しき習慣?をまき散らし続けるような気がします。

レジェンドさんだろうが、書籍を何冊書いていようが、関係ないと、独学していて思いました。

いまも、そう感じています、というか、より強くなっています。

もちろん、「プログラマになるわけでもない」、かつ、「ビジネスパーソンがプログラミングを兼務する場合の目線で」、です。

僕自身が、そうだから。

独学する方はほんとうにご注意ください。

  
  

★ExcelVBAの「バカ講師・バカ著者・バカライター・バカ編集者」の特徴

基本、以降に挙げた、(01)~(2×)のような人たちです。

そのような人たちが、「データ管理の基礎やデータ管理のコスパのことを何も知らない・なんも考えないバカ講師・バカ著者・バカライター・バカ編集者」「ExcelVBA専門バカ」たちです。

特に、その中の項目のうち、(01)~(22)までは、ひとつでもあてはまったら、、私ら習う側の成長を邪魔する、データ管理の基礎や現場のコスパを考えない、バカExcelVBA講師・バカExcelVBA著者・バカライター・バカ編集者」「ExcelVBA専門バカ」「絆創膏テクニックバカ(絆創膏テクしか教えず、基礎を教えないバカ)」だと判断していいと思います。

さらに、特に、(01)に該当する人間は「致命的」です。
僕だったらこんなバカからは絶対に習わないです。

本当は僕にはこんなこと書く資格がない・・・、それほどのクズ・カスでバカなのですが、でも似たようなバカでカスな講師や著者・ライター・編集者が増えてきて危機感を感じるので、「お若い方々の未来のために」あえて、書いておこうと思いました。
また、ぜひ、記事や書籍等を「有料で」作る方々は、もっと(例えば自らの無料サイトも含め)「データ管理目線」「コスパアップ目線」で、そういうものを書いてほしい、のでそのためにもと思います。
今現状は、多くの講師や著者(=バカ講師やバカ著者)がしてくるのは、「ExcelVBAができる=すごい」という価値観の話ばかりで、「そもそもそんなデータの持ち方してるから無駄なVBAやワークシート関数が増えて 振り回されるんだよ。本来そんな無駄なVBA要らないだろ?コスト考えろよ。」という話を全然しません。
「コスト考えたら汎用プログラム作るだけが真実じゃないだろ?プログラム書く人の習熟度や処理の頻度にもよるし。 ”敢えて” マクロの記録機能をうまく活用する・半活用するほうがコスパが上がることだって意外と少なくない。 ”マクロの記録はオブジェクト調査だけの機能” などと知ったかぶりの下らないマウント根性丸出しのバカなことしか言わない。僕らはプログラマになりたいわけじゃないんだから。営業や事務との兼任で仕方なくプログラム作ってるだけだから(もちろん基礎もしっかり学ぶことが前提で)。」という話もしません。
また、「汎用プログラムを作れば100%絶対にコスパが上がる」というウソを流布します。現実には、そうはならないケースも少なからずあります。
ぶっちゃけ、「汎用性の高いコードで埋め尽くされた・でもモメまくって結局使われなかったシステムやプログラム」がどれだけあるのか?昔と比べて本当に減っているのか?
作ったものの、本当の使用目的を100%達成できているのか?
そして、「データ管理の基礎」の話や「SQLを使ったデータ管理の基礎の話を先にすれば、無駄なVBAが日本から少なくとも1/5~1/3くらいは減る。」という話をぜんぜんしてくれません。

私のようなクズの思いあがり、どうかお許しください。
でも、そんな超クズでバカな僕でも、一言いいたくなるほど、「ExcelVBAの教育界は、酷い」状況のような気がしてなりません。
これまでの20年がこの体たらくだったので、今後の20年も、おんなじこと、テキトーに教えてられてるんだろうなあ・・・と肩を落としたくなります。

心配です。

お子さんがたが・・・。

  
  

~「生徒さんや独学する人の成長を邪魔してくる」、バカExcelVBA講師、バカExcelVBA著者、バカライター、バカ編集者の特徴~

(01)「ヘルプとオブジェクトブラウザの読み方を初心者にもわかるように教えてください」と生徒さんや読者から聞かれても、30秒以内に的確な返答ができない。
100%、「難しいからあとでね」「まだ早いからあとでね」とお茶をにごし、絶対に教えてくれない。
インストラクタとしての自覚も使命感もないため、「初心者にどうやったら、ヘルプとオブジェクトブラウザをわかりやすく理解してもらえるか」という準備・訓練・試行錯誤 を普段からまったくしていない。当然そのテクニックも持ち合わせていないし、開発しようとも、これっぽっちもしない。
自分自身、オブジェクトモデルの階層構造の重要性を理解していないから。
そのため、「ヘルプとオブジェクトブラウザを読みこなすために最低限必要なこと」すら、リスト化できていない。

(02)「変数?そんなの全部Variant型でいいよ?今後もそんなに深くはやらなくていいよ?多少の違いくらい知っておけば。」と必ず言う。自著に書く。それを但し書き無しに、安易に、言う。書く。

(03)そもそもコンピュータは、少数計算が苦手でよく計算ミスをすることを教えてくれない。コンピュータやマイクロソフトは「間違わない」前提ですべての話をする。
(こういう人は「人間らしさ、アナログ感覚・感・勘」もバカにしているかもしれない・・・)

(04)Excelがどういうときに小数計算ミスなどをするかを教えない。
(僕もよく分かってないから知りたいです。)

(05)オブジェクトモデルの階層構造の一覧図を見せない(Excel2000~2003のヘルプに記されている一覧図。)

(06)「Range("A1")」という「階層構造などを省略しまくったエラーだらけになる書きかた」を、「なんの但し書き」や「補足説明もせずに」、平気で自分の著書や記事に「安易に」「何度も」書く・説明する。

(07)階層構造を省略しない書き方を覚えるほうが、「急がば回れで上達が早まるし、自力でのエラー解決にも結びつく」・・・ということを教えない。

(08)オブジェクト変数をしっかり教えずにWithでの書き方ばかり教える

(09)Rangeオブジェクトはコレクションっぽい動きをする、ということすら教えない。

(10)値やオブジェクトを返す自作関数の重要性を教えない。
それらがプロパティやメソッド、また、「名前付き引数」などの理解に通ずることとかも。「名前付き引数」はもともと「引数を持つ ” 関数 ” のもの」であって、プロパティやメソッドだけのものではない。ヘルプにもそう書いてあります。(カッコの有無でエラーになるかならないかも。参考URL→コンパイルエラーにならない関数の使い方――括弧の有無、複数の引数、Callステートメント、戻り値、名前付き引数と順番

(11)「SQL」を教えない。自著等々で紙面が足りないのは理解できるとしても、存在すら教えない。「VBAと併用する良い道具/上達の方向性の1つ」としての紹介すらしない。
(「データ管理」の「基礎」のことをそもそも知らない。Excelやプログラムそのもの、それ自体がムダ、というケースのことも考えない。)
※「Excelは表計算ソフト」を力説しながら、にもかかわらず、「VBAやワークシート関数よりも計算やリストアップに特化したSQL」や、また、ピボットやQueryTableオブジェクトの話(省力化の話・コスパアップの話)を一切しない、「その神経」が僕には全く理解できません。
特に「SQL」はExcelでも使えるのに、なぜ、存在すら隠すのか、なぜ、無駄なVBAや関数を書くことを教えるのか、僕には1ミリも理解できません。

(12)ExcelでSQLがどのように使えるかを教えない。自著等々で紙面が足りないのは理解できるとしても、存在すら教えない。「VBAと併用する良い道具/上達の方向性の1つ」としての紹介すらしない。

(13)内部結合、外部結合を教えない。自著等々で紙面が足りないのは理解できるとしても、存在すら教えない。「VBAと併用する良い道具/上達の方向性の1つ」としての紹介すらしない。

(14)Excelであっても、「シンプルなミニリレーショナルデータベース作成なら、割と簡単に・かつ・バージョン2000以降からできる」ということについてまるで教えない。

(15)マクロの記録機能を、実用化できない。実用化サンプルを提示できない。
マクロの記録機能を、「単なるオブジェクトの調査機能」としかとらえていない。
=「データ管理のコスパ」のことを考えていない。知ったかぶり。

(16)「マクロの記録なんてムダ」で(オブジェクト調査にしか役に立たなくて)、「いわゆる汎用的なプログラム」さえ書けば、「絶対に効率化・コスパアップが図れる」と思いこみ・決めつけている。
現実には、「いわゆる汎用的なプログラム」さえ書けば、「100%絶対に効率化・コスパアップが図れる」とは、「必ずしも言えない」。
むしろマクロの記録機能を半利用するだけのほうが「いわゆる汎用的なプログラム」を書く場合よりも、「効率化・コスパアップが図れる」場合も意外とある・・・と自著等で言わない。

(17)ピボットテーブルを「単なるちょっと便利なだけの出来合い集計機能」とだけしか認識していない。そしてそう自著に書く。但し書きもせずに。
もともと使用目的が異なるのにワークシート関数も妄信していて、「いつまでもピボットのままではいけないから関数で処理できないかを考えて」と「関数がさも優位であるかのように誤った説明を自慢げにしたり」、「ピボットを使ってはいけない」などと誤った知識を読者や生徒さんに植え付けようとする。そうで自著で書く。
ピボット使わないなら「SQL」を教えるのかと思えば、SQLのことすら知らない。紹介もしない。自著で。

(18)グラフのVBA操作を詳しく教えない

(19)グラフの話と関連して、問題の数値化、仮説と検証、選択と集中、などとからめた話は一切しない。そのメリットデメリットなどの話とか。

(20)ADO、DAO、SQL、の合わせ技を教えてくれない

(21)Microsoft QueryとQueryTableオブジェクトの違いについて教えてくれない
というか、違いがわからない。

(22)Access(mdbファイル)を使っての「クライアントサーバもどきシステム」を組んで運用もした経験が一度もなく、Access(mdbファイル)の「SQL Serverやオラクル等よりも強いところ」を経験したことがない。
※もちろん、データベースシステム(データベースエンジン)としては「SQL Serverやオラクル、MySQL等のほうが高機能で、何10倍も良い」に決まってますが、でもそれでも、Accessにも多少の強みがあります。
フォーム機能や帳票機能などです。
また、クライアント台数が少くて・かつ・ユーザー別セキュリティが無くてもいいなら、「簡易クライアントサーバシステムもどき」が、あきらかに「SQL Serverやオラクル、MySQL等よりも、何倍も早く・安く」構築できます。
小さな規模なら、各種「説明用・インタビュー用のプロトタイプ」の作成にも使えます。(フォーム・DB全体など)
その部分ではVB6でも勝てないような場面もあります。
そういうことを知らないと、そこから派生して、「だからこその、Excelでのコスパアップの勘所」がわからず、いたずらに「なんでもExcelで(あるいはSQLやその他の出来合い機能を使わずExcelVBAばかりで)やろうとして」、で、「無駄なExcelVBAプログラムやワークシート関数」を増やしてしまいます。
(逆になんでもAccessでやろうとする、これまた愚かな人もいますが・・・)
というか、自分が「無駄なExcelVBAプログラムやワークシート関数」を「今まさに書いている」、ということにすら気づけません。そういう生徒さんを量産してしまいます。
これは、特にAccessを使わずExcelとSQLなどを使って処理する場合にも通じてきます。

(23)AccessとExcelの違いについて疎い
大量データならアクセス、高速性ならアクセスなどと、どうでもいい「的ハズレ」な説明しかできない。

(24)Accessとの連携VBAに疎い

(25)Access(mdbファイル)が壊れないようにする方法を知らない

(26)Accessの速度低下防止方法を知らない(データベースの設計上の高速化と、クエリの高速化)

  
  
★★★ 補足01

★ ExcelやWordの「マクロの記録」で書かれたプログラムと、ユーザーが手作業で書くプログラムとの違い(「マクロの記録」が汎用的にならない理由)

~中略~
一般的に、(限定的ではない)汎用的で再利用しやすいプログラムを作るには、前項の(a)~(f)のような書き込み要素が「すべて」必要です。

しかし、ExcelやWordの「マクロの記録」によって自動的に書かれたVBAプログラムには、以下の要素しか自動的に書き込まれません。

(e)オブジェクト式とオブジェクトの5つの機能のうちの3つ(プロパティ、メソッド、ユーザーが入力した入力値)
(f)列挙(列挙型/列挙体?/Enum)
(g)列挙用の組み込み定数的なもの

次のものはスッポリと抜け落ちてしまっています。

(a)変数(一般的な変数やオブジェクト変数)、配列、定数
(b)演算子
(c)関数
(d)ステートメント(分岐処理、繰り返し処理、エラー処理、などの基本構文)
(e)オブジェクト式とオブジェクトの5つの機能のうちの2つ(イベント、階層構造自由往来機能、)

特に、(a)~(d)は汎用的かつ、再利用できる便利なプログラムには必要な書き込み要素です。
でも「マクロの記録」で書き込まれたプログラムは、この(a)~(d)がスッポリと抜け落ちてしまっています。
さらには、(e)も、「イベントや階層構造自由往来機能」は抜け落ちてしまっています。

以上のようなことから、「マクロの記録」で書き込まれたプログラムは、「限定的なプログラム」とならざるを得ません。

「”汎用プログラム作成”のための書き込み要素の抜け落ちが大きいため」、「限定的なプログラムとならざるを得ない・・・」ということです。

そのため、「マクロの記録は限定的にしか使えないから役に立たない」というエンドユーザーや、下手をすると講師もいるのですが、ただ、それは間違っています。

ユーザーの習熟度とコストを考えた場合、「マクロの記録」で作ったプログラム(Subプロシージャ)は、作り方・使い方次第では「戦力」に「十分」なりえます。(もちろん「オブジェクトについて調べるだけ」という消極的な使い方だけではなく。)

例えば、「セルの値を操作するマクロ」の場合は、確かに限定的になってしまって扱えないこともあります。でも、それでも、それをちょっと部分修正すればほぼ汎用的になって使える場面が増えるマクロだってあります。
ほかには、たとえば、セルの値をいじらない・・・、
・「セル書式を変更する」マクロ、
・「よく使うテキストボックスや矢印をフォント設定や境界線設定などを既に行った状態でワンクリックで表示させるマクロ、
・きまりきった「列変更+拡大縮小+列挿入+数式入力+セル設定+ウィンドウ固定等々30工程」などをワンクリックで実行してくれるマクロ
など、リボン(特にアドインタブにて)やクイックツールバーに「ボタン化」しておくと、とても便利です。
作表の準備のための操作や、作表に使う操作などをマクロ化&ボタン化しておけば、いちいち数段階のメニューをたどらずとも作業がしやすいです。
そういったプログラムを作るのに、「プログラムの中身をきれいにしたい」と、いちいち、Webでオブジェクトを調べてマクロ化・ボタン化するのはバカらしいです。時間コストと金額コストの無駄遣いです。そして実際「専門バカ」はそれをやってしまいます(そんなのあとから書き換えることなんて、あんましないのにね)。
そういうものを作るときこそ、「マクロの記録」機能の出番です。

「マクロの記録は役に立たない」と豪語している人は、こういうことを考えません。
「プログラムが書ける人間が偉い」と思っているのです。
思い込みと決めつけが激しいタイプの方ですね。
「別に汎用プログラムが書ける人が偉いんじゃなくて、低コストで問題が解決できる人のほうが偉い」んです。
「それについて、汎用プログラムが必要なら書く」「マクロの記録機能であってもコスパが良くて問題解決できるならそれでOK」、というだけのことなんですが、「汎用プログラムが必要のない・でもExcelでの自動化の要求されるシーン」にまで汎用プログラムを書こうとするのはこれまた「専門バカ」のやることです。
そしてそういうシーンは、Excel操作では意外と少なくないのです。
特に大きな説明シートや、Wordならマニュアルを書いたりするような場面では多いと思います。
(「マクロの記録」機能を使うことは、プログラミングがあまり分からない人でもできます。)

そのほか、「本当に汎用化するかどうか決めるまで、マクロの記録でつくったものや、それを半汎用にアレンジしたものでやる。プラス、一部、手作業で。それで今のところ十分。使用頻度の増加や場面(条件分岐)の増加が発生してから考えればいい。」、ということだってできます。
「コスト」のことを考えるなら当然そういう場面もあります。

「マクロの記録は役に立たない」と豪語している人は、そういうことも考えません。
結局は、
「役に立つように機能をコーディネイトする能力がない無能な人」
「使える機能の良さを見ようとせず、デメリットばかりほじくり出し、使えないと決めつける無能な人」、
「” 無知の知 ” ができない人」、あるいは
「試すことすらしない知ったかぶり」です。

こういう人は、同僚やお客様にもそういう態度をとる人だと思います。

そして、「コスト(時間コスト・金額コスト)」のことも全く考えません。

ご注意ください。
  
  

★★★ 補足02

ところで「マクロの記録」といいますと・・・・「哀れなExcelVBAの専門バカ」になられてしまった人は、「役立たず」とか「VBAのオブジェクトについて調べることくらいしか役に立たない」とか言い出します。
実際・役に立たなくてコスパのことを考えない、仕事の邪魔をしてくるのはそのような「専門バカ」の人たちで、「マクロの記録」は使い方・使いどころをしっかり考えれば、ちゃんとお仕事のコスパアップに結び付きます。
逆を言えば、『なんでもかんでも最初から全て「汎用プログラム」をつくれば絶対にコスパアップできる』とは『限りません』。自分で使うだけなら勝手にすればいいのですが、そうではなく、例えば「組織内で、他人に使わせる・彼らの習熟度によって変える必要性がある」という場合、「自動記録で作ったマクロを汎用的になるように即座に部分的に修正できる」、「作ったマクロをメニュー化できるよう教育する」、「汎用化するかどうかを判断するまでのテストプログラムという位置づけで、自動記録のマクロをそのまま使ったり、一部修正したものを活用」ということもコスパアップに十分つながります。)
そもそも、「自分は営業との兼任社内SEなので、いちいち、考えて作ってるヒマなんかない。」とか、「汎用マクロ作ったところで ”使いこなせない” ユーザー、マクロの記録機能で作ったこぢんまりしたプログラムのほうが、”ミスが少ない” ユーザーだっている」わけですから。

「そんなことない。慣れればこのくらいのコード、10分もあれば書ける」というバカ市販書籍著者などもいますが、「そうなるまでに、どんだけ繰り返し練習しなけりゃならないかもちゃんと言え!このバカ!」と言いたく(痛く)なります。
「お前はそれが仕事なんだからやれて当然だろ?営業と事務の兼務の人間は本業があるからそうすぐには覚えられないんだよ!おまえ、そういう人間のコスパのことなんか真剣に考えたことねえだろ?!しかもプロが俺らド素人(初心者の読者)にマウントしてんじゃねーよ!恥ずかしいと思わないのか?プロならプロにマウントしろよ?
ドラムで言うとピーター・アースキン先生クラスの先生がとんでもないシンバルレガートやって「な?簡単だろ?」というのはカッコイイけど、2流3流がそういうマネしても見苦しいだけ!バカ講師ならなおさら!(しかも日本のExcelVBAのレジェンドさんたちって書籍を読む限りでは「初心者への教え方は」ぜんぜんイマイチだし)
人格の高いホンモノの講師さんは、そんなことは絶対に言わずに、でも、しっかりと、俺たちド素人を導いてくれる。そういう人を知っている。」と返しておきたいと思います。
バカExcelVBA講師やバカExcelVBA著者は、たとえばドラム講師で、「ダブルストロークなんて簡単だよ?実際にやってみせるよ?ね?ほら!簡単でしょ?」と説明するダメ講師に似ています。
「実際には奥の深い決して簡単ではない技」をさも簡単なように(騙して)見せ、でも「見せるだけ」で、「これとあれとこういう訓練を同時に全部やればいやでも叩けるようになる」という具体的なトレーニング方法や、「誰でも実施できる基礎の動きが複数ある・ひとつじゃない・だからその複数の基礎トレーニングを同時進行させた方が上達が早い」「でもこんなレベルで満足してたらクズプレイヤー」「でもでも、下手でもいいから、1ミリずつでもマイペースで楽しんで進んで・向上心を失わずに・魂や踊りの形はひとつだけじゃない、と、上達していけたら、テクニックだけのバカとは違うグッドプレイヤー・ナイスプレイヤー」と言うことを教えず、「テキトーなこと言って、1つの方法しか教えない」。
つまり、初心者に「腫れ物にでもさわるように接し」「難しいからと」「(難しかったとしても教えねばならない)肝心なこと・一番重要なこと・目標・理想」「いやでもできるようになる方法」を教えない。
むしろ下手くそになる方法を教える。
「へえ~。それだけわかってればいいんだ。」と誤解させ「ドヘタ」「クズプレイ」のレベルで満足させる。
というか己が「ドヘタ」「クズプレイ」なことに気づけなくさせる。
「イケてる」とあきれた愚かな勘違いをさせる。
「1つの方法」以外の方法も、結局しっかり「体系づけて」教えない。


そもそも、「そんなことない。慣れればこのくらいのコード、10分もあれば書ける」などと、そういうことを言う人は、あろうことか、初心者に向かって「俺ってすごいだろ?10分で書けちゃうよ!」「ボクってそれくらい頭がいいし、パソコンも得意なんだ!」とマウントしたいだけ、「クソの役にもたたない自慢」をしたいだけなのです。
人間性が低すぎます。
そんなこと言ったところで「俺でもちょっとがんばればやれるかも」なんて思う人はいない。
多くの人に(少しやってみた段階で)、「はいはい、あんたは頭がいいよね~。結局すぐに覚えられない俺は結局バカでセンス無くて、これ以上やってもムダだ。 ” 慣れるだけ ” 、ってテキトーなこと言いやがって、何をどんだけやればいいんだよ?」と逆に初心者の方々に思わせてしまい・挫折に簡単に導くだけです。
ホント、「専門バカ」って「マウントしたがり」の「結局・自慢話ばっかり」で辟易しますよね、
「自慢したがりの、時代に取り残された一番嫌われる上司」と同じ。

特にお若い方々は、そういう「専門バカ」になってしまわれないように、どうか、どうか、十分にお気を付けくださいませ。