★★★★★★★★★★★★★★★★Access2000VBA・Excel2000VBA独学~必読!!ExcelVBAが上達するかどうかの最初の分かれ道!オブジェクトとオブジェクト式について~
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
(a)オブジェクトとは「目に見える/見えない/大きい/小さい」にかかわらず、「3D的、立体的」な、「ユニット・複数の機能の複合体・パーツ・部品」、「ある意味、Excelという大きな工場で働くミニミニロボットたち」あるいは、「装置」と訳してもいいモノ・・・、のことで、VBAコード上としては、「オブジェクト式」のことを意味します。
「オブジェクト」のうち、「目に見えるもの」としては、Excelの場合なら・・・、
セル、
シート、
ピボットテーブル、
グラフ、
ボタン、
ウィンドウ、
ドロップダウンリスト、
・・・・といった機能・ミニミニロボットたちがあります。
一方、「目に見えない・見えにくいもの」としては、
各種の「コレクション」機能だとか
「エラー管理機能」、
あるいは、
Excelからは独立していますが(連携して使用する)
「ADOやDAOと呼ばれるモノのテーブル管理機能や
データベース管理機能」
・・・・といったものなどがあります。
そのような 3D的、立体的、なもの・・・・、3D的、立体的な「絵(ボタンなど)」や目には見えないミニミニロボットを、プログラム用にあえて「文字」として書き表したものが、「オブジェクト式」・・・という感じです。
プログラムは文字で書くものなので、絵のままや目に見えないままじゃ、プログラム上ではどうすることもできず全く扱えないので、便宜的にいったん「オブジェクト式」という文字列に「置き換える=直す」わけです。
ただ、オブジェクト式に直す際には、「オブジェクトモデル」「オブジェクトの階層構造」「オブジェクトモデルの階層構造一覧図(下図)」という「ルール」どおりに、「階層構造をなした形で」「階層構造を保持したかたちで」「階層構造を省略しないかたちで」、「式として文字列化」する必要があります。(下図参照)
「省略しない書き方」が、結局、一番エラーが出ませんので、つまづきにくい、です。
※参考図:Excel2000のヘルプより。↓↓↓ 初心者、独学者、必見です!!!
そして、その時に良くないのは、「みんながよく使う階層構造」は省略することができてしまうのですが、
・最初からその「省略した書き方」だけしか教えられないケースが多すぎて、
・オブジェクトモデルや階層構造の重要性をまったく教えないケースが多すぎて、
・「省略した書き方」がどれほど無駄なエラーを起こすか教えないケースが多すぎて(そしてそのエラーは灯台下暗しで初心者には解決しづらいことも教えないので)、
そのせいで、初心者のかたがいつまでたっても中級者にあがれません。
もしかしたら、「こんな図のこんなにたくさんのオブジェクト、覚えれられるわけない」と言うかもしれませんが、実際によく使うのはこの図のなかの一部ですし、そもそも「覚える必要はなく」、「これを見ながら書くだけ」ですから、それでいいのです。
そうすればエラーが減るし、Q&Aサイトで回答してもらったことが少しでもわかりやすくなるのにそれを教えてもらえません。その重要性を教えてもらえません。(一部のすごい先生・ちゃんとした先生はちゃんとお教えしてくれますけど・・・。)
ただ、多くの場合は、この階層構造の中のどこに、プロパティやメソッドやイベント、コレクション、等々が位置するかも教えられないので、初心者・独学者はまったく成長できません。
単一オブジェクトとコレクションオブジェクトの位置関係(上下の位置なのか、左右の位置なのかなど)や考え方、そういったことも教えてもらえません。
単一オブジェクトとコレクションオブジェクトにからむ・・・、
「単一オブジェクトが内包するプロパティからの、下位・上位の単一オブジェクトの取得」
「単一オブジェクトが内包するプロパティからの、その他の何らかのオブジェクトの取得」
「単一オブジェクトが内包するメソッドからの、何らかのオブジェクトの取得」
「それらと、コレクションオブジェクトたちが内包する ” Item ” という名前のプロパティやメソッドからの、単一オブジェクトやその他のオブジェクトの取得についての考え方。」
「多くの単一・および・コレクションオブジェクトが内包する ” Parent ” という名前のプロパティからの、親オブジェクト(1つ上)・あるいは・何段階か上の階層の ” 単一 ” のオブジェクトの取得。(Parentプロパティではコレクションオブジェクトは取得できず、単一オブジェクトだけが取得できます。)」
・・・などについても教えてもらえません。
それらも理解ができないとまったく成長できませんので、結果、初心者・独学者の方々はいつまでたっても、『 成長できない状態のままに放置 』されることになってしまいます。
自力のエラー解決すらできません。
多くの場合、「応用の利かない絆創膏的ニック」を教えらるのみです。
なので、「自力でのサンプルプログラムの書き換え」もできません。
独学のほうが害が少なくてマシかもしれないですね・・・。
※参考:実生活に置き換えた「オブジェクト」のイメージ
→「おうちや各お部屋ごとに、その中で働く電子レンジやテレビ、エアコン、みたいなもの・・・(複数の部屋に個別に1つずつあるとかないとか)」とか、
「目に見えないオブジェクト→銀行のATMの地下や壁の中に埋まっているケーブルや装置たち、そしてそれらを管理するための管理システム。ATMそのものは目に見えるオブジェクト」
といったイメージでもOKです。
そういったものたちを、プログラム上で文字で操作できるように、「文字列化」、したものが「オブジェクト式」・・・というイメージです。