前回Functionを紹介しました。
今回は、クラスモジュールで遊ぶと言うことで、
クラスモジュールを紹介します。
以前のように、概念的なことではなく、IF構文をクラスモジュールで実装します。
目次
クラスモジュールで遊んでみよう
こんにちは。伊川(@naonaoke)です。
クラスモジュールに関しては、昨年の11月に質問が来てから、まともな回答ができないままでした。
来る日も来る日も、クラスモジュールについて、勉強していたのですが、理解できないままでした。
しかし、ある動画を観て、鳥肌が立ちました。
さすが、現役のエンジニアと思えるくらいの単純、明快な説明です。
本当に目から鱗でした。
では、コードを紹介します。
このブログはこんな人にお勧め
- VBAを勉強している人
- クラスモジュールの難しい説明で、諦めた人
- クラスモジュールが全然わからない人
このブログを、読み終わるころには・・・・
クラスモジュールのさわりが理解できます。今まで、VBAでクラスモジュールの理解が最高峰と思っていた人がいると思います。このブログを読み終わる頃には、クラスモジュールも単なる、可読性を高めるための手段だということが理解できます。
クラスモジュール
・独立性の高いクラスは再利用せいが高い
・クラスは複製を幾つでも作れるので、生産性の向上に繋がる
・ユーザー定義型とは異なり、データの安全性を確保できる
上記のようなメリットがあります。
しかし、これらを理解するには、オブジェクト指向を理解しないと、全くわかりません。
オブジェクト指向は、ものすごく大切な考え方です。
オブジェクト指向を理解して、
クラスモジュールの書き方を理解して
そして、実際にコードを動かす
もうヤダとなります。
しかも、Functionのように、必ず例になるのは、消費税と合否判定のように、
クラスモジュールの説明に関しては、人間の、身長、年齢、体重等、
興味のない、しかも、長いコードで説明されています。
だから、実際に、どのように使うのかわからないです。
微分積分も、解き方を理解できれば、それほど、複雑な問題ではないですけどね。
クラスモジュール 作業手順 その1 動画の内容
私が観た動画の内容は、クラスモジュールに、よく使うコードを書きましょうと言うことでした。
早速、testというクラスモジュールを作成します。
このように、セルA1に1という値を頻繁に入力するという業務があるとします。
その場合には、クラスモジュールに、上記のようなコードを記載します。
そして、標準モジュールに下記のコードを記載します。
そうすると、セルA1に、1という値が入力されます。
そう、たったこれだけです。
こんなんで、いいのかと思うくらいのとてもシンプルなコードです。
本当に、びっくりです。
クラスモジュール 作業手順 その2 IF構文を実装
Functionと同様に、A列で、1であれば、男、1でなければ、女という値を表示させたいとします。
上記のコードは、クラスモジュールに記載します。
上記のコードを、標準モジュールに記載します。
完成です。
クラスモジュール 作業手順 その3 クラスモジュールの余談 その1
なんと言っても、標準モジュールに記載するコードが、驚くほど、短くなります。
クラスモジュールって、辞書機能のようなものなのかとおもいました。
しかし、通常は、クラスモジュールは、このような使い方はしないと思います。
クラスモジュールは、python等を勉強するとわかるのですが、ゲームのキャラを設定するのに便利です。
だから、クラスモジュールを検索すると、人の、名前、年齢、体重等を設定するのだと思います。
ドラゴンボールの主人公である、悟空を、クラスモジュールで設定する場合ですが、
ノーマル悟空
スーパーサイヤ人悟空
スーパーサイヤ人3悟空
上記をクラスモジュールで設定すると便利です。
そのシーンで利用する、悟空を、クラスモジュールから呼び出すからです。
クラモジュール 作業手順 その4 余談 その2
このクラスモジュールは、まだ便利なことがあります。
しかし、private subで記載すると、悟空しか呼び出せないように設定することができます。
つまり、クリリンの時に、悟空を、呼び出しても、エラーが出るようになります。
ここがポイント
自分で、勉強していて、思ったことがあります。配列、Function、参照渡し、値渡し、クラスモジュールまでは、分野は異なりますが、つながっています。この根底に、オブジェクト指向があります。つまり、可読性とコードの効率を求めるのでしょう。長い間、疑問であったクラモジュールのですが、偶然に観た動画で、作動させることができました。
まとめ
クラモジュールに出会って、1年くらい疑問でした。
しかし、オートルックアップクエリ同様に、何かのきっかけで、突然理解できるという体験を2度しました。
人生、死ぬまで勉強です。
理解できなくても、自身の、思考スキルをパワーアップさせましょう。
今回も最後まで読んでいただき、ありがとうございました。
今回のサンプルファイルは、No224です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。