もう一つのプロパティ
プロパティには、もう一つの使い方(意味)があります。
それが、
「2.オブジェクトを取得する」
ことです。
オブジェクトを取得する
Excel VBAを学ぶ上で、理解が難しいのはここです。
基礎ができていない人は、ここを理解できていません。
とはいえ、どの入門書でも本格的に教えているというわけでもありません。
あえて避けていることも多いので、理解していない人が多いのも当然かもしれません。
例えば
Range(“A1”).Value
と書いたときには、A1セルの値を取得できます。
この動きは、
「RangeオブジェクトのValueプロパティが評価されて、A1セルの値を取得する」
という言い方をします。
「評価」という難しい表現が出てきました。
意味としては「チェック(検証)」の方が、まだ分かりやすいかもしれません。
「Range(“A1”).Value の書き方が正しいかどうかをチェックして、OKなら結果を返す」
といった動きのことを「評価する」と呼ぶ、ぐらいの理解でいいかと思います。
(※プログラミングの世界では、よく「評価する」という言葉が出てきます)
A1セルに数値の”2″が入力されていれば、評価の結果”2″が返ってきます。
A1セルに文字列の”abc”が入力されていれば、評価の結果”abc”が返ってきます。
ここまではお分かりになるかと思います。
では、
Range(“A1”).Font.Name
と記述できるのですが、これは何を表しているでしょうか?
文字を見れば、なんとなく分かるかと思いますが、A1セルのフォント名が取得できます。
これは、どう読めばいいでしょうか?
読み方としては、2段階に分けて左から評価しながら読んでいきます。
Range(“A1”).Font
で、Rangeオブジェクト.Fontプロパティという形が評価されて、Fontオブジェクトを取得します
(ここの「.Font」はプロパティです)。
次に、その取得したFontオブジェクトを使って
Font.Name
で、その取得したFontオブジェクト.Nameプロパティが評価されて、フォント名を取得しているのです
(ここでの「Font」はオブジェクトです)。
つまり、次のような階層構造がここにあります。

なんとなくでも分かりますか?
難しいですよね。。。
話が余計わかりにくくなるので、あえて説明していませんが、
Range(“A1”)
も実はプロパティなのです。
「???」ですよね。。。
なんでこんなことをする必要があるのと思うかもしれません。
まだ、深く理解する必要はないので、ここでは雰囲気だけをつかんでおいてください。
プロパティは値とか状態が返るだけではなく、オブジェクトも返すのです。
プロパティを使用して、オブジェクトを取得する。
これはVBAでプログラムする時に、あたりまえのように使われています。
そして、オブジェクトを取得する時は、基本この形で記述されます(省略されることもあります)。
しかしながら多くの入門書では、この説明が割愛されているのです(説明が難しいからでしょうか。。。)
値や状態が返るとは何?
オブジェクトが返るとはどういう意味なのか?
そのへんのことを次のステップで説明していきます。
この理屈がわからないとVBAを理解できるようにはなりません。
逆に、この理屈がわかるとVBAを理解できたと言えるようになります。
是非頑張って理解しましょう。


