2009年06月08日

取得したオブジェクトの名前

Excel VBAでは、オブジェクトは、通常、プロパティやメソッドなどを利用して取得します。
そして、前にもちょっと書きましたが、多くの場合、取得されたオブジェクトの名前は、それを取得するのに使用したプロパティやメソッドの名前と同じになっています。
たとえば、WorkbooksコレクションオブジェクトはWorkbooksプロパティで、InteriorオブジェクトはInteriorプロパティで、それぞれ取得することができます。
また、Rangeのように取得する方法が複数あるオブジェクトの場合でも、それと同名のプロパティやメソッドが1個ぐらいは用意されていたりします。
こういうのは、わかりやすいといえばわかりやすい、混乱しやすいといえば混乱しやすい仕様だと思います。

ただし、「多くの場合」というのは、決して「すべて」ということではありません。
たとえば、ShapeオブジェクトのLineプロパティで取得できるのは、LineオブジェクトではなくLineFormatオブジェクトです。同様に、FillプロパティではFillFormatオブジェクトが取得されます。

さらに、Excel 2007で追加されたInteriorオブジェクトのGradientプロパティでは、そのときのPatternプロパティの内容に応じて、LinearGradientオブジェクト、RectangularGradientオブジェクト、またはNothingのいずれかが取得されます。

セルをグラデーションにするVBAコードの書き方を調べたい場合に、マクロの記録機能で出てきたコードから、ヘルプの上記の項目にたどりつくのは、なかなか大変そうな気はします。(^^;)
(正直、ヘルプで目的の項目にたどりついたとしても、あまりわかりやすい説明とはいえないのですが)

オブジェクト名が問題になるのは、この例のようにヘルプでそのオブジェクトの項目を探したいとき、およびオブジェクト変数を宣言するとき……ぐらいですかね。
逆に言うと、それ以外では、取得されたオブジェクトの名前が何なのか、意識しなければならないケースはあまりない、とは思うのですが。
posted by 土屋和人 at 09:56| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/29671573
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック