2017年07月12日
オブジェクト式がわからない【Excel VBA】
VBAを理解するための第一歩はオブジェクト式
つまりオブジェクトとは?メソッドとプロパティとは?
を理解するところから始まります。
・・・・・・が!
わからない!!
どーしてもわからないんです!
オブジェクトとは、ブック、シート、セルなど。
メソッドは動作
プロパティは値を設定するもの。
大まかにはわかりました。
基礎の本も読みました。
実際にマクロもつくりました。
でも!!
なんかモヤモヤする!
Javaなどのメソッドやプロパティと、なにかが違う。
よくよく考えるとハテナだらけでした。
ここでつまづいているのは私だけでしょうか・・・?
疑問その1
ワークシート、ブック、セルがオブジェクトなら
ActivesheetやActivecellもオブジェクトのはず
なのに ActivesheetやActivecellやSelection はプロパティらしい
よくよく調べるとRangeもCellsもWorksheetsでさえも・・!
疑問その2
プロパティにも引数や戻り値がある
Range("A1") ってプロパティらしいのに引数がある。
(いや引数じゃなくて配列?コレクション??)
そのうえ、Rangeオブジェクトを返すらしい
引数と戻り値があるとすると、
プロパティとメソッドとの区別がつかなくなると思うんだけど??
疑問その3
そもそも区別をどこまで理解しなければいけないのか
プロパティであってもメソッドであっても、
戻り値があるかないかだけを知っていれば済む話なのか
・・・半分理解をあきらめたギモンです(^^;)
考えれば考えるほどよくわからなくなっていくオブジェクト式・・・!
恐るべし。。。
とりあえず疑問1について
悩んだ結果、ある答えがひらめきました!
まず、プロパティには2パターンあるということ
・よくある説明どおり、属性として値をセットするもの
・オブジェクトとして扱われる(オブジェクトを返す)もの
わからないのは、2番目のオブジェクトを返すプロパティでした。
で、ひらめいたこととは。
『プロパティにはオブジェクトのアドレスが格納されている』のでは!?
ということです。
アドレスが格納されている、つまりポインタと考えると
プロパティとして定義されているのも納得だし
オブジェクトとして扱われているのも納得できます!!
オブジェクト返すといわれて戻り値を連想して、
プロパティに戻り値があるのに違和感を感じていたのですが
ポインタなら戻り値ではないですね!
疑問2も半分くらい解消されました。
真偽のほどは定かではありませんので参考まで・・・!
のこる疑問も解消すべく
少しずつ勉強してきたいと思います。
【このカテゴリーの最新記事】
-
no image
この記事へのトラックバックURL
https://fanblogs.jp/tb/6378363
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック