Access2000VBA・Excel2000VBA独学~用語:”目に見える”「メソッド・プロパティ・列挙(=Enum)・定数(=Const)」と右クリックメニューの画面の関係について~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
  
「メソッド・プロパティ・列挙(=Enum)・定数(=Const)」には、下図のように「目に見えるもの」「メニュー化されたもの」と、「そうでないもの」があります。
ここでは、「目に見えるもの」についてご紹介しています。
でも、「目に見えないもの」も基本、同じような構造となっています。


  
  
★ 列挙や定数の調べ方
例えば「形式を選択して貼り付け」の列挙や定数を調べたい場合、「マクロの記録」でまず何らかの「形式を選択して貼り付け」の操作をします。

そしてそこに生成されたコードを調べ、そこに書かれた自分が分からない列挙や定数の値(単語になっています)を、「オブジェクトブラウザ」で検索し、そこからヘルプでさらに調べます。
すると、どれが列挙で、どれが定数(組込定数)かが分かります。

ただし、「マクロの記録」をするときに、セル、グラフ、ワークシート・その他の状況や操作内容によっては、右クリックしたものによっては、VBAコードの記述内容がまるで異なることがありますのでどんな時にどんな親オブジェクトになるのかの見極めが必要です。

  
  
★ 各メニューの文言が、どのメソッドやオブジェクト・プロパティ・等々に相当するかのヘルプでの調べ方

前項の「列挙や定数の調べ方」と同様に、「マクロの記録」をしてから、メソッドやオブジェクトを調べます。オブジェクトらしき単語は一番最初、メソッドやプロパティらしき単語は2番目に、多くは書き込まれます。
(※(1)や(2)などがついていたら、最後のカッコまでが多くはオブジェクトで、その次の単語が多くはメソッドやプロパティです。※プロパティは値を取得・設定するだけのプロパティです。)

例えば、「セルを1つだけ選択→→ 右クリック→→ ” コピー ” を押す」という操作を、「マクロの記録」で設定すると、以下のようなコードが自動生成されます。

Selection.Copy

先に答えから言ってしまうと、この場合は、Selectionがオブジェクト(Rangeオブジェクト)で、Copyがメソッドです。

ということは、セルの「コピー」は「Range.Copyメソッド」であり、「Selection.Copy」、あるいは「××××.Copy」と書けばいいことになります。

というわけで、その調べかたは以降のようにやります。

例えば、「マクロの記録」で自動生成されたプログラムコードの画面にて、「Selection」 の上をクリックしてF1キーを押します。何も出ないので Selection でヘルプ検索します。(ヘルプはVBEを開いてからのその画面の「ヘルプ」です。)
Selection をヘルプで調べると、Window.Selection プロパティやApplication.Selection プロパティ、というものが出てきます。

Window.Selection プロパティのほうを読むとよくわからないのですが、Application.Selection プロパティのほうを読むと、「Application オブジェクトでは、アクティブ ウィンドウで現在選択されているオブジェクトを返します。」とあるので、これかな?とあたりをつけます。
どんな形式のオブジェクトかはわからないけど、でも、「オブジェクトっぽい」と、なんとなく感じます。

次に、Copyの上をクリックしてF1キーを押します。以下のような画面が出ます。

ここでは、先頭が「Excel」になっているものを選びます。「Excel」となっていれば、「Excel専用のオブジェクトかメソッド、プロパティ、イベント、など」を意味しています。
これとは別に、例えば「Office」と出ていたら「Excel、Word、Access、Powerpointなど共用のもの」で、また、「VBA」と出ていたら「自作の」コレクションやオブジェクト用なので、今探しているものとは違います。

結果的に「Range.Copy メソッド」というヘルプページが表示されて出てくるので、「ああ、これはなんだかよくわからいけどメソッドなんだな」と分かります。
「Range.」という語句が「Copy」の前にあるので、たとえば「Range.Copy」とさきほどの「Selection.Copy」をそのまま「.」基準で対比させると、また、「Selection」のヘルプには「現在選択されているオブジェクト」とあったので、そのため、きっと「Selection」は「Rangeオブジェクト」のことを意味しているんだな、とあたりがつきます。(超初心者の方は「Rangeオブジェクト」のことを知らないかもしれないのでその場合はあたりが付かないかもしれません。が、この際なので「Rangeオブジェクト=単一セル・またはドラグなどで選んだセル範囲」とだけ覚えておいてください。)

で、「Range」オブジェクトをヘルプで検索し、「Range オブジェクト メンバー」を表示してみます。
基本、「×××× オブジェクト メンバー」というのを押すと、各オブジェクトの機能の一覧や検索ができます。

その画面になった時点で、その画面をいったんクリックしてから、「Ctrl+F」のショートカットキーを押すと、その画面の中だけの文字検索ができるようになります。(Webのヘルプでも同じように「Ctrl+F」のショートカットキーでやれます。別ダイアログで出るか、リボンやメニューバー付近に検索ボックスが出ます。)

そこで、セルを右クリックしたときの「コピー」「貼り付け」「形式を」などのメニューの文言、あるいはその一部を、検索ボックスに入れて検索してみます。

そうすると、例えば「コピー」で検索すると、「Copy    範囲を、指定の範囲またはクリップボードにコピーします。 」と出てきます。
これにより、「あ、セルをコピーする場合は、Copyをしたい場合は Copy というメソッド=英単語を使えばいいんだな。そして、これは紫の箱のような形のアイコンがだからメソッドだな」と分かります。上のほうにスクロールすると「メソッド」に分類されてるので、そこでも、「メソッドだ」と分かります。
(プロパティは人差し指のようなアイコンで、イベントは稲妻みたいなアイコンです。)

「どんな英単語を使用するのか?やどんな機能を持っているか、どんなメソッド・プロパティ・イベント・列挙・定数を持っているのか?」等々は、この「×××× オブジェクト メンバー」のヘルプページを見ると分わかるようになっています。

このように調べると、「マクロの記録」の操作をしなくてもどういうメソッドやプロパティ・イベント・列挙・定数を使ったらいいかがわかったり、時間がたってから調べなおすのに、いちいちマクロのプログラムコードの画面に戻らずとも調べることができます。

なお、1行以内で「.」(ドット)で区切られてつなげられている部分のうち、
一番最後の単語から逆順に調べていったときに、その単語が、
「値を取得・設定するだけのプロパティ」や「メソッド」だと特定できたら、その単語の1つ前の単語から一番先頭までが全部、「オブジェクト」になる、
と思っていただいて、おおむね差し支えないと思います。

※「プロパティ」には「値を取得したり設定するだけのもの」と「オブジェクトを返すもの」の2種類がありますこれはこのサイトの受け売りです)。どれがどうなのかはヘルプやオブジェクトブラウザで調べます。ヘルプに「オブジェクトを返す」という記述があればオブジェクトを返すプロパティです。また、オブジェクトブラウザでなら、説明ペインの As の次が「グリーンの太文字リンク」になっていたら、「オブジェクトを返すプロパティ」です。それ以外のプロパティは基本、「値を取得・設定するだけのプロパティ」です。
ちなみにですが、「オブジェクトを返すプロパティ」を単語として見つけた場合は、その単語の部分は「オブジェクトそのもの」です。その部分、もしくはその部分から前の部分のすべてが、「オブジェクト」となります。

また、長めのオブジェクトの部分に「.」(ドット)が一つでもあったら、階層構造になっている、と理解してください。
(Excel、Application、といった階層構造・オブジェクトは省略されることが多いです。VBAProject、もかもしれません)

例えば

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="https://××××.co.jp"

といったプログラムを見た場合、「.」(ドット)で区切られてつながっている部分は「ActiveSheet.Hyperlinks.Add」です。(Addの次の単語のあいだには半角スペースがありますので)
これを逆順に、最後尾の「Add」からF1キーを押すなどして調べていきます。

すると「Add」は「Sheets.Add メソッド」などのページが出てきて「メソッド」とわかります。
また、オブジェクトブラウザで、「完全に一致する単語だけを選択」で「Add」を検索すると、Office、Excel、VBA、VBAProjectなど、すべてのカテゴリ(=ライブラリ)で、「メソッドとしてだけ」しか出てきません。
「Add」という名前のプロパティはありません。
それらを見るとどうやら「Add」は「メソッドでしかない」と言えそうです。

というわけで・・・、「基本、メソッドの前の部分はその先頭までが・全部・オブジェクト になる」ということなので、つまり、そういうことです。
言い方を変えますと、「ActiveSheet.Hyperlinks」の2つの単語が、それぞれ「オブジェクトだ」ということです。「ActiveSheet」も「Hyperlinks」もそれぞれが「オブジェクト」です。(2つの場合もあれば、3つ、4つ、5つ、それ以上になることもあります。)

このように「.」(ドット)が含まれたオブジェクト(=オブジェクト式)のことを、「階層構造をもったオブジェクト」=「階層構造をもったオブジェクト式」と呼んだりしています。
当サイトでは、「階層構造をもった長いオブジェクト式」のうち、「ActiveSheet」、「Hyperlinks」のような「それぞれのオブジェクト・オブジェクト式」のこをことを、(便宜上)「部分オブジェクト・部分オブジェクト式」と呼んでいます。

そして、階層構造を持つオブジェクト式の場合、一番最後の単語(=一番最後の部分オブジェクト)が調査した「メソッド」や「値を取得・設定するプロパティ」の「直上のオブジェクト」になります。そして(逆に)、そのオブジェクトから見れば、調査した「メソッド」や「値を取得・設定するプロパティ」は、そのオブジェクトの「メンバ(構成要素)だ」ということになります。

なので、その直上のオブジェクトの「×××× オブジェクト メンバー」のヘルプページを見ると、色んなことがわかります。
メニュー化された目に見える「メソッド・プロパティ・列挙(=Enum)・定数(=Const)」はもちろん、目に見えないそれらも調べることができます。

ちなみにですが、「ActiveSheet」の前には、「Application」オブジェクトの階層と、「Workbook」オブジェクトの階層(つまり・部分オブジェクト式)が省略されています。
よって、「ActiveSheet.Hyperlinks」は本当は、「Application.Workbooks(××).ActiveSheet.Hyperlinks」という長いオブジェクト式が、「正式な階層構造を省略していない」オブジェクト式(=オブジェクト) になる・・・ということになります。
ライブラリの分を先頭にくっつけて、
「Excel.Application.Workbooks(××).ActiveSheet.Hyperlinks」
と書くこともできます。
COMオートメーションでWordからExcelを操作したり、AccessからExcelを操作したりする場合は、「ライブラリ」の部分もオブジェクト式に含めて考えると、何かヒントになるかもしれません。
どんな「ライブラリ」があるかは、オブジェクトブラウザの一番上のドロップダウンで分かります。
VBEの画面の「ツール→参照設定」でチェックマークが入ったものでもあります。それプラスVBAProjectのライブラリです。


オブジェクトの階層構造はこのように省略ができますが、「省略したがためにエラーになってそれが見抜けずに数日も悩む」という愚かなことになる場合が少なくありません。
また、現在アクティブになっていないシートのセル操作をするとき等々も、階層構造を省略をするとエラーになることがあります。
そのほか特に、セルやシートといった「Web上に事例や説明が腐るほどあるオブジェクト」ではない、「それ以外」のオブジェクトを、ご自分独自で操作しなければならないときは要注意です。
そのため、初心者はの方はオブジェクト式を省略しない書き方と、その長ったらしいオブジェクト式をオブジェクト変数に代入して操作する方法を覚えるのが、中級にあがるための近道のひとつ、です。

  
  
※「×××× オブジェクト メンバー」のヘルプページを見ると、そのオブジェクトで何ができるか?も一覧できて便利です。2010のヘルプが最高に扱いやすい・調べやすいです。2003以前のヘルプもすごくいいです(オブジェクトの階層構造が2010のヘルプよりも調べやすいです。2013や2016のヘルプは残念な仕様になっています。退化してしまいました。とても調べにくいです。)

  
  
★ セルのハイパーリンクを「マクロの記録」で調べた場合

例えば、セルのハイパーリンクを「マクロの記録」で設定すると、以下のようなコードが自動生成されます。

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="https://××××.co.jp"

この場合だと、ActiveSheet.Hyperlinks がオブジェクトで、Add がメソッドです。

この場合は、カッコがついていないので、
まず ActiveSheet を調べ、
次に Hyperlinks  を調べ、
次に Add     を調べると、どこまでがオブジェクトかがわかります。

この場合、
まず ActiveSheet の上をクリックしてF1キーを押します。
              何も出ない場合は ActiveSheetでヘルプ検索。
次に Hyperlinks  の上をクリックしてF1キーを押します。以降同上。
次に Add     の上をクリックしてF1キーを押します。

まず、ActiveSheet の上をクリックしてF1キーを押します。何も出ない場合は ActiveSheetでヘルプ検索します。
すると、Window.ActiveSheet プロパティ やWorkbook.ActiveSheet プロパティ、Application.ActiveSheet プロパティなどが出てきますが、すべて、「アクティブ シート (一番手前のシート) を表すオブジェクトを返します。」とあるので、「ActiveSheet 」は「よくわからんけど、多分オブジェクトだな」とあたりをつけられます。

Hyperlinks の上をクリックしてF1キーを押すと下図のようになります。

赤枠に「オブジェ・・」と出るので、「ああ、これも多分だけど、オブジェクトだな」とあたりがつけられます。

最後に、Add の上をクリックしてF1キーを押します。下図のようになります。

ここでは、先頭が「Excel」になっているものを選びます。「Excel」となっていれば、「Excel専用のオブジェクトかメソッド、プロパティ、イベント、など」を意味しています。
これとは別に、例えば「Office」と出ていたら「Excel、Word、Access、Powerpointなど共用のもの」で、また、「VBA」と出ていたら「自作の」コレクションやオブジェクト用なので違います。
結果的に「Sheets.Add メソッド」と出てくるので「ああ、これはなんだかよくわからいけどメソッドなんだな」と分かります。