● Access2000VBA・Excel2000VBA独学~「選択したオブジェクトの調査シート白地.xls」(当方自作の参考ツール)~3つの自作関数とともに。★ ~Current無省略オブジェクト式記述~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
目次
 ★ ダウンロードや内容確認
 ★ はじめに
 ★ このExcelシートを何と一緒に使うのか?「3つの自作関数」とともに使います。
 ★ ヒント:「部分オブジェクトの取得」の基本は、まずは2パターンくらいから。
※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
  
  
★ ダウンロードや内容確認

(a)ダウンロード(Zipファイルです)

  →こちら からダウンロードしてください。

(b)内容確認
表の見えかただけです。入力はできません。


  
  

★ はじめに

このシートは、何に使うのかといいますと、「階層構造を省略しないオブジェクト式」を、Web情報に頼らず、ヘルプなどを使って自力で書くための、「部分オブジェクト式」を埋めていくために使います。(「階層構造を省略しないオブジェクト式」、「部分オブジェクト式」について

※Excelのオブジェクトモデルの階層構造図

VBAに挫折する原因のひとつに、多分ですが、「階層構造を省略しないオブジェクト式」(ある意味これが「正式な基礎」)を初期の段階でしっかりと習わずに、かつ、「省略形の手抜きのオブジェクト式ばっかり習ってしまい」、VBAプログラミングの基礎である「オブジェクト変数の扱い」を「全く知らないでプログラムを書き続けてしまう」・・・ということが挙げられると思います。
(これは学習する側のせいではなく、教える側のせいですが)

挫折する人のほとんどが、たぶんですが、次のような状況だと思います。

「オブジェクト変数」が扱えない
=オブジェクトが階層構造になってること自体を知らない
=プロパティも、メソッドも、イベントも、入力値も、階層構造も、全部、「オブジェクトが保持・保有・内包している」というイメージができない
=オブジェクト・コレクション、ひいてはVBAそのもの、の「構造」がわからないため、構造の書き間違いのエラーがいつまでたっても自力で解決できない
=Web記事のオブジェクト式のコピペはできるけど、そこまでどまりで応用がまったくできない
=当然ですが、大変残念ながら、ヘルプもいつまでも全く理解できるようになれません。
=ヘルプが理解できなければ、スペルミスが原因のエラーくらいしか自力で治せません。
=「オブジェクトは、このプロパティまたはメソッドをサポート(保持・保有)していません」のエラーの意味すらわからないのは、そもそも階層構造やオブジェクトが内包しているものが理解できていないから・・・、ということにも気づけない。

でも、このシートを部分利用して正しい省略のないオブジェクト式を書くことを繰り返していれば、そういったことが少しずつ、解消されていくと思います。

そして、そのうち、いつも、毎回毎回、やることが同じなのでパターン化してきて、このシートは要らなくなります。

結果、イミディエイトウィンドウだけで同じ作業ができるようになると思います。

そうなったら、たとえばWeb検索してヒットしたVBA関連の情報、マイクロソフトさんのVBA関連の情報が、以前よりも簡単に理解できるようになっていると思います。

オブジェクト変数もすんなり理解でき、使えるようになっていると思います。

オブジェクト変数が普通に扱えるようになれれば、おそらく、中級にすぐに上がれるようになると思います。

※このシートを部分利用することで、「あなたも絶対に、100%すべてのオブジェクトのオブジェクト式が書けるようになれる!!」なんていう保証はありませんが、でも、かなりの部分が、自力で、書けるようになると思います。
  
  

★ このExcelシートを何と一緒に使うのか?「3つの自作関数」とともに使います。

「選択したオブジェクトの調査シート白地.xls」は、以下で示した、「3つの自作関数」とともに使います。
Access2000VBA・Excel2000VBA独学~イミディエイトウィンドウで使う自作関数 ★ ~Current無省略オブジェクト式記述~
  
  

★ ヒント:「部分オブジェクトの取得」の基本は、まずは3パターン(2パターン)くらいから。

「部分オブジェクトの取得」とは「部分オブジェクト式を書く・作る」という意味です。

省略しない正式なオブジェクト式を書くとき、その階層構造は「.ドット」と「.ドット」で区切られます。

その「.ドット」と「.ドット」の間に書く式を、ここでは「部分オブジェクト式」と呼んでいます。

で、その「部分オブジェクト式」ですが、おそらく(書き方の)基本的なパターンは3パターンくらいしかありません。

僕の勉強不足で、4パターン目、5パターン目、もあるかもしれませんが、とりあえず基本の3パターン(2パターン)を覚えておくだけでも、全体像が見やすくなったり、オブジェクトを使いやすくなったり、エラーを自力で解決しやすくなったりします。

逆に、「ほとんどが3パターン」、と限定できれば・最初から分かっていれば、不明点やあれこれ迷うシーンや回数も減って、「不安」が減っていきます。

基本、「部分オブジェクト」の取得の際は、プロパティ経由、メソッド経由、コレクション経由のどれかで取得します。

「部分オブジェクトの取得」=「部分オブジェクト式」を書く・・・という意味なので、「部分オブジェクト式」を書くときも、プロパティ経由、メソッド経由、コレクション経由で書いていくわけですが、そのそれぞれの基本の「3パターン」(2パターン)はみな同じ・・・という感じです。

そしてその3パターン(2パターン)は、次のパターンです。

(01)「××××××(数字1個)」              例:「Worksheets(1)」
(02)「××××××("オブジェクトの名前等が1個か複数個")」例:「Worksheets("Sheet1")」
                          例:「Range("A1,B1,C1")」
(03)「××××××(列挙の値,列挙の値)」         例:「Axes(xlValue,xlPrimary)」

逆に言うと、このような「形」をプログラム内に発見したら「ああ、ここは何らかのオブジェクトだな?」と見当をつけられる、という意味でもあります。


※「数字1個」とは、インデックス番号のことです。
※「列挙」=「Enum、列挙体、列挙型」です。ヘルプの中でもそんな感じで扱われています。
※「列挙の値」=「列挙体が保持する値」ですが、その値はあらかじめ決まっていて、「定数」と呼ばれる種類のものです。
※「列挙の値」の部分は、「引数」と呼ぶことのほうが多いかもしれません。
「××××××(引数,引数,引数・・・・)」みたいな感じで。でも「引数」だとイメージしにくいのでここでは「列挙の値」、と書きました。

「列挙の値」とは、例えばダイアログ画面などで、その中にある各種の設定項目のうち、その設定値をドロップダウンリストやチェックボックスなどで変更するようなケースを想定してください。

そのときに、そのドロップダウンやチェックボックスの中の各値が、「列挙の値」に相当します。

※参考記事:『~用語:”目に見える”「メソッド・プロパティ・列挙(=Enum)・定数(=Const)」と右クリックメニューの画面の関係について~

例えば「線」のドロップダウンの設定だと、「2.5pt」とか出ていたり、その横に線の太さの「絵」がリストアップされていたりと、そんな感じになっていると思いますが、そのリスト内の各項目に相当するのが「列挙の値」であることが多いようです。(「絵」を「文字・単語」に置き換えたもの・・・という感じです。)

具体的には、「xlCategory」「xlSeries」「xlValue」という感じの単語です。
(この値は、上記の図とは無関係の設定値です。紛らわしくしてしまってすみません。が、「列挙の値」のイメージは、上図のような各種のリストやチェック押下領域の中の各値たち・各項目たちです。)

あるいは数値、です。
それが「列挙の値」です。
画面のリストの「絵」が「単語」に置き換えられたもの、です。

ドロップダウンリストの中の各値は最初から決められた値です。その中の各値をVBAプログラム上、文字として表現しなおしたのが、「xl・・・・・」といった「定数」たちです。
また、「xlCategory」「xlSeries」「xlValue」といった単語はすべて数値が割り当てられているため、その数値を指定に使っても良いことになっています。
「定数」は、「組み込み定数」とか、広義で「予約語」などとも呼ばれるかもしれません。
いすれにしても「あらかじめ決められた値・決め打ちされた値・書き換えられない値」のことです。(変数のように内容が変化はしません。)

なお、「××××××」の部分は・・・、
プロパティ経由で「部分オブジェクト式」を書くときは「プロパティ名」
メソッド経由で「部分オブジェクト式」を書くときは「メソッド名」
コレクション経由で「部分オブジェクト式」を書くときは「コレクション名」
・・・となります。

どの部分オブジェクトがどれ経由になるかは、ヘルプに全部書いてあります。
というか、「ヘルプを読まないとわかりませんし、ヘルプを読むと早くて確実」、です。
部分オブジェクト毎に異なります。
(なお、コレクション名とプロパティ名がまったく同じ名前で「s」を使った複数形であることが多いので最初のうちは頭の中がこんがらがるかもしれません。でもまったくの別物です。こちらを読めば、なんとかご理解いただけるのではないかと思います・・・・。)

※オブジェクトに対しての理解がまだ深まっていないうちは、先にWeb検索して調べて、で、出てきた内容とヘルプを比較します。それをするだけでも(最初は意味不明だったとしても根気よく繰り返せば)、意外な発見があって、できるだけ短時間での能力アップに確実つながります。

※「列挙」の補足

「列挙(=Enum・列挙体・列挙型)」の具体例です。(2010のヘルプより)

XlArrowHeadLength 列挙
名前 値 説明
xlArrowHeadLengthLong 3 矢印の先端が最も長くなります。
xlArrowHeadLengthMedium -4138 矢印の先端の長さは中程度になります。
xlArrowHeadLengthShort 1 矢印の先端が最も短くなります。

XlActionType 列挙
名前 値 説明
xlActionTypeDrillthrough 256 ドリル スルー
xlActionTypeReport 128 レポート
xlActionTypeRowset 16 行セット
xlActionTypeUrl 1 URL