仕事と晩飯とその他

日記です。

何がオブジェクトだったのか

一夜明けたらEXCELVBAについて「あらかじめ与えられている65536行×256列のオブジェクトをゼロ次元から二次元までの「範囲」というオブジェクトとして自由に定義したうえでその「範囲オブジェクト」のプロパティを変更するためのメソッドとファンクションを記述するための言語」という理解にたどりついた。

やっぱオブジェクト指向か。

ACCESSの「オブジェクト」がわかりやすいのはフォームとその部品をイメージできるからだったということか。なるほど。

それに対してEXCELのRANGEオブジェクトは、ゼロ次元(一つのセル)・一次元(一行もしくは一列だけの範囲)・二次元(複数行と複数列で定義された範囲)のそれぞれについて範囲としての定義が可能であるだけでなく、そのどれもについてあらかじめ定義しなくても利用できる(もちろんプロパティも変更できる)というところがツボか。配列と相性がいいのは考えてみたら当たり前か。範囲というのはある意味において配列とほとんど同義だ。

ACCESSのフォームとEXCELのワークシートを比較した時の「わかりにくさ」はそう考えると明確だ。ACCESSのフォームではオブジェクトは「部品として追加」する(実際はそれだけではないが)、一方EXCELのワークシートでは既にあるセルというオブジェクトを「範囲として定義」する。

なるほど!

ACCESSでもSQLでもテーブルの中の値が別のレコードの値によって変化してくれたら後でどれだけ便利かと思うことがあるが、EXCELならそれも可能かもしれない。テーブルの「レコード」や「フィールド」をオブジェクトとしてとらえる発想は自分には無かったが、EXCELではそう考えてもよさそうだ。実際、普段使ってるちょっと複雑なワークシートはそんな感じだ。セルというオブジェクトもテーブルもレコードもフィールドも意識してないのに。

すごいな、EXCEL。まだまだ奥は深い。

だがしかし、今日は家族サービスでクタクタだ。暑かったし。紫外線もきつかったし。脳ミソはへたりまくり。しかもここ最近の寝不足が響いて眠い。眠過ぎる。晩飯食って風呂入ったらすぐに寝てしまいそうな予感。そしてもうすぐ晩飯。