オブジェクト階層とモジュール
モジュール
Excel VBAにおけるモジュールがなんなのかよくわからない。
プログラミング・パラダイムも不明である。
クラスを定義することは可能だがオブジェクト指向ではなく、手続きと関数をスタックする方法によっているように思える。
あまり気にする必要もないだろう。
どうやら各Sheetを1つのファイルと見なしてよいようだ。
Sheetオブジェクトの宣言する場所で宣言したPrivate オブジェクトはファイル・スコープとなる。
Publicで宣言したものは事実上のグローバル・スコープのようだが、Excel VBAにグローバル・スコープがあるのかどうかは不明。
オブジェクト階層
オブジェクトの階層構造があるようだ。
上から Application.WorkBooks.WorkSheets となる。
Application は いわゆるウィンドウ。
WorkBooks は ウィンドウ内のクライアント領域にある子ウィンドウ
WorkSheets は 子ウィンドウ内の各シート
と、対応させて考えてよい。
一意のセルのを選択
シート1のA1セルを選択
Sheet1.Cells(1, 1).Select
見ての通り オブジェクト.(ドット) の形式で各オブジェクトにアクセスできる。
ただ、.(ドット)はヘルプ・ドキュメントに演算子の項目になく、なにものなのか不明である。
気にしてはいけない。
コンテクスチュアルなキーワードとして "Me" が利用できる。
Cファミリーの言語ではthisキーワードやthisポインタとして馴染みのものだ。名称は「Me」を取った様子。
当然、Meがどのオブジェクトを指すかはコンテクスチュアルに決定する。
Me.Cells(1, 1).Select
更にこのMeも省略できる。
Cells(1, 1).Select
匿名オブジェクトのようにコンパイラ側が自動的にオブジェクトを提供してくれているのだろう。
詳細は気にしてはいけない。