目次
クラスモジュールについて
こんにちは。伊川(@naonaoke)です。
昨年の11月29日に下記のような質問を頂きました。
ExcelVBAは、日頃仕事でも使用しており、初級程度の心得はあるつもりなのですが、「クラスモジュール」の使い方がイマイチわかっておりません…。
「VBA クラスモジュール」などで動画検索をしてみたりはしましたが、今のところわかりやすい動画にも出会えていない状況です。
現時点で、クラスモジュールで何か具体的にやってみたい事がある、というわけではないのですが、自身の興味とスキル向上のため、もし可能であれば、何か簡単な具体例でご紹介頂けないでしょうか?
宜しくお願い致します。
クラスモジュールを勉強したことで、私なりに理解したことを紹介します。
クラスモジュール
オブジェクトを作成するためのデータ型です。その「型」を好きなように作成できます。
オブジェクトはすべて参照型になります。
Sheet1 などのワークシートや、セルを表す Range などのオブジェクトは、すべてクラスで作成されています。
標準モジュールと同じように、変数や関数といったコードを書けます。
その他にコンストラクタやプロパティといったクラス専用の機能があります。
クラスの特徴として、インスタンス化すると使用できるようになります。
使い終わったら破棄する必要があります。
クラスモジュール 理解した事 その1 たい焼きの型とたい焼きの生成
よく、クラスモジュールの説明では、下記のように説明されます。
インスタンス⇒標準モジュールで、小麦粉とアンコを入れる
ゆえに
たい焼きを沢山、生成できる。
必ず、この説明です。
しかし、理解はできますが、このたい焼きの型と、たい焼きの大量生成をどのように、VBAで表現するかです。
勉強していくと、この説明は、必ずしも、クラスモジュールには、適していません。
クラスモジュール 理解した事 その2 難しい用語
継承
カプセル化
ポリフォーリズム
初っ端から、この4つの用語が登場します。
これも、言っていることは理解できます。
但し、VBAにこの考え方をどのように表現するのかも理解できません。
クラスモジュール 理解した事 その3 挫折の原因
結局、クラスモジュールを知らなくても、やりたい事ができると言うオチです。
好んで、勉強しようとは思いません。
なぜならば、実務で利用するときに、VBAの作成に時間をかけている場合ではないからです。
クラスモジュールは、Excelに合った、クラスモジュールの勉強が必要なのです。
つまり、Excelは、表計算ソフトです。
その表をクラスモジュールで操作できるようになることが目的です。
このような表をクラスモジュールで扱います。
クラスモジュールで、検索と修正機能をVBAで表現します。
新規登録はオマケです。
この時のコードよりも進化していると思います。
クラスモジュール 理解した事 その4 三角形、四角形を使って説明する
三角形を定義する
異なる直線にある3つの点を線で結んだ多角形。
これが三角形の定義です。
勘違いしてはいけないのは、内角の和の合計が180度というのは、三角形の定理です。
三角形を定義するに、条件を加える
異なる直線にある3つの点を線で結んだ多角形 かつ、3つの内角の1つが90度
このような理屈になると思います。
直角三角形を作成する命令以外はアクセスできないようにする(カプセル化)
もし、二等辺三角形を作成する場合に、直角三角形にアクセスされは困ります。
つまり、下記を使い分けます。
Private
Public
クラスモジュール 理解した事 その5 四角形で説明する
継承
このクラスモジュールは、汎用性がありません。
ポリモーフィズム
クラスモジュール 理解した事 その6 クラスモジュールとは
しかし、設計図というのが、どうもしっくりきません。
チマタでいう設計図を、ネームタグに変えて考える
結局、クラスモジュールと標準モジュールの合体は、工場の生産ラインだと思うのです。
クラスモジュール 理解した事 その7 クラスモジュールを起点考えない
オブジェクト指向は、現実の世界を、プログラムで表現するという考え方が起点です。
標準モジュール ⇒ 営業部門
最終的には、このような考え方にまとまりました。
ここがポイント
クラスモジュールは、知らなくてもいい。しかし、プログラムを学ぶ観点から、クラスモジュールは、絶対に勉強すべきです。
まとめ
それらしい、回答をするのに、半年かかりました。
クラスモジュールを理解できない人が、この記事を読んで、すこしでも理解いただけたら幸いです。
ネット上には、色々は情報があります。
また、クラスモジュールについて記載された書籍も少ないです。
今回のサンプルファイルは、下記の書籍を参考に記載しました。