● Access2000VBA・Excel2000VBA独学~VBAプログラミングでの「オブジェクト」 について
 (ヘルプを自力で読めるようになるために)

「オブジェクト」は「モノ」とか「操作対象」ととらえるよりも、「機能」とか「ユニット」、もしくは「ちいさな複数の機能の集合体」ととらえると理解しやすいと思います。

少なくともそのほうがExcelやWordに組み込まれている「VBAのほうのヘルプ」は読みやすいと思います。

そしてVBAで言うオブジェクトは「目に見えるもの」だけではありません。

「オブジェクト」は、「目に見えるボタンとかウィンドウとかアイコンとか」もオブジェクトだし、「もし目に見えなくても何らかの機能を有するもの」なら、それは「オブジェクト」です。

例えば、何らかの裏方の自動処理機能とか、集計機能とか、メッセージ伝達機能とか・・も「オブジェクト」です。

現実の世界と照らしあわせると、オブジェクトは、例えば、「自動車」「トンカチ」「キリ」「ATMシステム」、などです。

まず、各オブジェクトを「機能」とか「ユニット」ととらえると以下のようなものとなります。

(01)「自動車」→主に人や荷物を運搬するという機能を有したユニット
(主に人や荷物を運搬することができる機能)

(02)「トンカチ」→釘を打つ、という機能を有したユニット
(釘を打つ、ということができる機能)

(03)「キリ」→木に穴を空ける、という機能を有したユニット
(木に穴を空ける、ということができる機能)

(04)「ATMシステム」→心臓部や裏方の各種装置・動きは目には見えないけど、全国の銀行をオンラインでつなぎ、銀行端末にて現金の預け入れや引き出し、記帳等々を自動的に行う、という機能を有したユニット。
(全国の銀行をオンラインでつなぎ、端末にて現金の預け入れや引き出し、記帳等々を自動的に行う、ということができる機能)

=======以前書いた内容01=========

なお、VBAを覚えるときに重要なことの一つとして「ヘルプを自力でなんとか読めるようになる」ということが挙げられます。

ヘルプが読めるようになると、マイクロソフトの技術情報もなんとなく読めるようになるし、多くのWebサイトの情報も理解しやすくなります。

そのためには、「オブジェクト」「コレクション」「イベント」「メソッド」「プロパティ」「関数」「ミドルウェア」「式」「変数」「リテラル値」「SQL」「句」などの基本用語の把握が不可欠です。

ただ、この基本用語、いろんなところで解説を読んでも、イマイチ、ピンときません。

特に、VBA初心者にはなかなか把握しづらいです。

例えば良く言われるのが、「オブジェクト=モノ 、とか、オブジェクト=操作対象 」といった表現ですが、ぶっちゃけ、このような形の理解では、ヘルプを読んでも意味が分かりません。

このような理解の仕方は、ほんまもんのシステムエンジニアやプログラマには良いのかもしれませんが、私たちドシロートにはけっこう意味不明です。

なので、私たちドシロートは「正攻法で行かない」ことをおすすめします。

あえて「大幅に意訳して理解する」という方法のほうが、VBAのヘルプは読みやすくなると思います。

正しい、重箱の隅をつつくような技術的な詳しい意味は、学んだあとに徐々におぼえていけばいいです。

とりあえず、最初は、わからないことが多いから、あえて、意訳で強引に用語を訳します。

どの本も、技術者が教えるので、正確さに欠けるとかいう理由で、詳しく教えようとします。

シロートにわかるように説明してくれないので、そこでまず、つまづきます。

でも、シロートは別にプログラムを作ったからって外部に売るわけじゃないので、ある程度のつかみがOKならそれでいいのです。

なので、最初のうちは、「てきとー」に意訳すればOKです。

のちのち、「あ!ホントのところはこうだったんだ!」とわかればそれでいいのです。

というわけで、例えば「オブジェクト」の意訳ですが、僕の場合はこうです。

「オブジェクト=機能」
「オブジェクト=機能の集合体」
「オブジェクト=機能何らかの機能を有しているもの。」
「オブジェクト=ユニット」
「オブジェクト=○×を管理するユニット、○×を管理する機能」

オブジェクトとは、「モノ」という漠然としたものではなく、「何らかの機能を有しているもの。」と意訳したほうがヘルプが読みやすいです。

目に見えなくても(コマンドボタンのような目に見える形や絵になっていなくても)、「なんらかの機能を有しているもの」であれば「オブジェクト」です。

小さくても機能がたった1個しかなくても何かの機能を有していればオブジェクトです。(トンカチ、のこぎり、のような感じ。)
単一機能、もしくは複合機能の「集合体」でもオブジェクトです。(自動車、飛行機、のような感じ。)

例えば「エラーオブジェクト(Error オブジェクト)」なら、「エラー表示機能」とか「エラー管理機能」といった風に意訳します。
エラーオブジェクト(Error オブジェクト)は、ウィンドウやコマンドボタン、ドロップダインリスト、のように目には見えませんが、「エラーの番号知らせてくれる」、「エラーの内容を知らせてくれる」、などの複数の機能を持った「機能の集合体」です。

なお、ヘルプやWebサイトには「機能」と「オブジェクト」を混同するな、というようなことが書かれてもいますが、かまわず、「○×オブジェクト」を「○×機能」と意訳してヘルプを読んでいます。

そのほうが最初のうちは効率的だから。

深い内容のプログラムコードを書くようになったら、「機能」と「オブジェクト」を混同するな、ということを守ればいいのです。
実際そのころには、その違いについて理解できるように自然になっていると思います。
  
  
※絶対にこちらも読んでおいてください!! ↓↓↓
★★★★★★★★★★★★★★★★ 超重要!!必読!!ExcelVBAが上達するかどうかの最初の分かれ道!オブジェクトとオブジェクト式について~★★★★★★★★★★★★★★★★
少し詳しく、でもそこそこまとめた記事です。
  
  

僕の場合、ヘルプの目次に例えば、

PublishObjectオブジェクト
PublishObjectsオブジェクト
QueryTableオブジェクト
QueryTablesオブジェクト
Rangeオブジェクト


なんて風に表示されていたら、

PublishObject機能
PublishObjects機能
QueryTable機能
QueryTables機能
Range機能


なんて風に意訳して見ています。

ははあ、「Range機能」 なんてもんがあるんだね。
何ができるのかね?
この機能を使うと・・・

なになに?

「セル、行、列、1 つ以上のセル範囲を含む選択範囲、または 3-D 範囲を表します。」

と書いてある。

なんとなくだけど、選択したセルを管理してくれる機能なんかなー?

なんて風にあたりを付けます。

そして、「Range機能」で使えるプロパティやメソッドなどを見てみて、

「 Activate 」ってメソッド(命令)は、「1 つのセルをアクティブにします。このセルは、選択範囲の中に含まれている必要があります。セル範囲を選択するには、Select メソッドを使用します。」なんて書いてあります。
「 AddComment」ってメソッド、「範囲にコメントを追加します。」なんて書いてあります。
「 ClearContents 」ってメソッドは、「セル範囲から数式と文字をクリアします。」なんて書いてあります。

「 Address 」というプロパティ(各種設定)には「コード記述時の言語で参照範囲を表す文字列型 (String) の値を返します。」って書いてあるし・・・

ん~、やっぱ、「Range機能」 は選択範囲に対してなんかしたり、設定したり、値の操作ができるんだろうなー?

なんて推測がたちます。

そんな風にヘルプを読んで行きます。

=======以前書いた内容02=========

VBAを覚えるときに重要なことの一つとして「ヘルプを自力でなんとか読めるようになる」ということが挙げられます。

ということを以前書いたのですが、そのとき、まず最初に「オブジェクト」というものについて書かせて頂きました。

今回はその「オブジェクト」についての補足説明です。

「オブジェクト」「プロパティ」「イベント」「関数」・・・、そういったものを理解する際に、例えば、「最初から厳密な意味を知ろうとする」と、なかなかイメージがしにくくなってしまいます。

ですので、初心者のうちは、「こんな感じ」で覚えておいていいと思いますし、ちょっとくらい乱暴な考え方でも大丈夫だと思います。

『なお、ヘルプやWebサイトには「機能」と「オブジェクト」を混同するな、というようなことが書かれてもいますが、かまわず、「○×オブジェクト」を「○×機能」と意訳してヘルプを読んでいます。』

ということも書かせて頂きましたが、それはそういう意味です。

やっぱり、VBAのヘルプを読むうえでは、「オブジェクト=操作対象」では、訳がおかしくなり、ヘルプが読みこなせません。

PublishObjectオブジェクト
PublishObjectsオブジェクト
QueryTableオブジェクト
QueryTablesオブジェクト
Rangeオブジェクト
Errorオブジェクト

といったものを

PublishObject操作対象
PublishObjects操作対象
QueryTable操作対象
QueryTables操作対象
Range操作対象
Error操作対象

とか

PublishObjectモノ
PublishObjectsモノ
QueryTableモノ
QueryTablesモノ
Rangeモノ
Errorモノ

と訳すとほんとうにチンプンカンプンです。

それよりも

PublishObject機能
PublishObjects機能
QueryTable機能
QueryTables機能
Range機能
Error機能

PublishObjectユニット
PublishObjectsユニット
QueryTableユニット
QueryTablesユニット
Rangeユニット
Error用ユニット

PublishObject管理機能
PublishObjects管理機能
QueryTable管理機能
QueryTables管理機能
Range管理機能(セル管理機能・・・みたいな。)
Error管理機能(エラーメッセージ管理機能・・・みたいな。)

と訳したほうが、ヘルプやマイクロソフトの技術情報が断然読みやすくなります。

そうすれば

アイコン、
ボタン、
ウィンドウ
タスクバー
テキストボックス
ドロップダウンリスト
リストボックス

は全部「目に見えるオブジェクト」だし

PublishObjectオブジェクト
PublishObjectsオブジェクト
QueryTableオブジェクト
QueryTablesオブジェクト
Rangeオブジェクト
Errorオブジェクト

も全部「目には見えないけどオブジェクト」だし・・・

といったことの区別や意味がつかみやすいと思います。

そういうことになれば、言ってしまえば、例えば Windows自体も、Officeソフト自体も、画像処理ソフトも、メールソフトも、大きな大きな「オブジェクト」です。

小さなオブジェクト(小さな機能・ユニット)の集合体の「大きなオブジェクト」です。

そういう考え方でいいと思います。

「オブジェクト」というとかなりな「広義」になりますので、その都度、自分の「理解」に都合がいいように意訳すると良いと思います。

専門家は「いいかげんな覚え方はするな」というかもしれませんが、「オブジェクト」という言葉の派生自体が、多分、けっこういいかげんなので、それほど気にする必要は無いと思います。

特に社内プログラマは多少いいかげんでもいいです。

作ったソフトは自社内で使うだけで、別に外部に売るわけじゃないですから。

そういうユーザーにとっては、多少強引でもいいので、ヘルプが自力で読みこなせるように「意訳する」というほうが重要です。

『なお、ヘルプやWebサイトには「機能」と「オブジェクト」を混同するな、というようなことが書かれてもいますが、かまわず、「○×オブジェクト」を「○×機能」と意訳してヘルプを読んでいます。』

というスタンスで、ぜんぜん、問題ありません。

逆に言うと、「いいかげんな覚え方はするな」とおっしゃる方に、「じゃあ、オブジェクトを素人にもわかるように、操作対象とかモノとか以外の言葉でもっと小学生にもわかるように、ヘルプが自力で読みこなせるように、1単語で説明してくれませんか?」と逆に、訊ねてみれば、どの専門家の方も「機能」という言葉を見れば、「操作対象以外だったら、まあ、最初は機能・ユニットでいいんちゃう?」ということになると思います。

★関連記事
Access2000VBA・Excel2000VBA独学~VBAプログラミングとはどんなプログラミング方式なのか?(巷では個々の細かい用語の説明ばかりで、意外と短くはまとめられていないこと)