LoginSignup
6
7

More than 5 years have passed since last update.

Excel VBA 奮闘記 オブジェクト階層とモジュール

Last updated at Posted at 2014-07-12

オブジェクト階層とモジュール

モジュール

 Excel VBAにおけるモジュールがなんなのかよくわからない。
プログラミング・パラダイムも不明である。
クラスを定義することは可能だがオブジェクト指向ではなく、手続きと関数をスタックする方法によっているように思える。
あまり気にする必要もないだろう。

どうやら各Sheetを1つのファイルと見なしてよいようだ。
Sheetオブジェクトの宣言する場所で宣言したPrivate オブジェクトはファイル・スコープとなる。
Publicで宣言したものは事実上のグローバル・スコープのようだが、Excel VBAにグローバル・スコープがあるのかどうかは不明。

vba_mod.PNG

オブジェクト階層

オブジェクトの階層構造があるようだ。
上から Application.WorkBooks.WorkSheets となる。

obj.PNG

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

匿名オブジェクトのようにコンパイラ側が自動的にオブジェクトを提供してくれているのだろう。
詳細は気にしてはいけない。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7