- ベストアンサー
クラスモジュールを使わないとできないこと
エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 私は以前勉強がてらクラスモジュールを使ってドラクエのような ゲーム(戦闘シーンのみ)を作りました。 これで他の方の回答にもあったインスタンスというのが 分かった気がしました。 クラスモジュールを使う私なりの解釈では Excelに存在しない何かをExcelで使いたいときにクラスモジュールを 使います。 たとえば、Excelのオブジェクトに「車」というオブジェクトは 存在しません。 ExcelのプログラムでExcel上に車を存在させるには 車オブジェクトが必要になるので それをクラスモジュールで定義します。 ここで車種や色、大きさといったプロパティを定義します。 そして進む、止まる、バックするといったメソッドを定義します。 これでオブジェクトができるので後は標準モジュールなどから このオブジェクトを使います。 その時、オブジェクトをそのまま使うのではなく オブジェクトのコピーのようなもの(インスタンス)を使います。 、、、と話は長くなるのですが、私はこんな形で解釈しています。
その他の回答 (4)
- mitarashi
- ベストアンサー率59% (574/965)
最近、クラスモジュールを使った回答を2件しています。 http://okwave.jp/qa5087647.html のNo.3ですが、一秒間に一度起こるイベントを定義しています。これは、クラスモジュールを使わないとできないと思います。 http://okwave.jp/qa5070895.html のNo.3ですが、これはクラスモジュールを使うことで、データの管理が楽になっている事例です。この質問者は、関数に10個のデータを渡す時、シート間にまたがるデータ、列間にまたがるデータを渡すアルゴリズムに苦労されたのだと思いますが、クラスモジュールを使うと、データをオブジェクトが保持していますので、ところてん式にデータを1個ずつ渡していくだけで、単純移動平均の計算ができています。まあ、こんな簡単な事例ですのでモジュールレベルの配列にデータを入れて、普通の手続き型?プログラミングでも出来ると思いますが。
お礼
ありがとうございます。 よく読んでみます!
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 初心者に教えるようなことはないとは思いますが、簡単に言えば、クラスモジュールは、プログラムの設計図のようなものです。それを実行して、それで、インスタンスが作られるわけです。ある人は、鯛焼きの型と鯛焼きの関係だと言いましたが、私は、設計図と実体(化)(英語からの発想)だと考えています。 ユーザー定義関数などは、個別のブックで使うなら、あえてクラスで作る必要はありません。コントロール配列も、コントロール・ツールをクラスで設定するのは、好みに近いと思います。 Excel VBAでは、ひとつだけないものは、Application イベントです。でも、物知りで皮肉な人は、ThisWorkbook モジュールでも作れるのではないか、というかもしれませんが、クラス側のほうが楽だと思います。その点、Word VBAになると、標準モジュールでエラーが発生したりするので、Class を使わざるを得ない場面が出てきます。
お礼
Wordならクラスモジュールを使う機会が多いのですね。 参考になりました。
- 30246kiku
- ベストアンサー率73% (370/504)
コントロール配列を使うような場面では、以下が参考になると思います。 http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm
お礼
ありがとうございます。
- mohenjo
- ベストアンサー率37% (125/335)
お礼
もろクラスモジュールのことが書かれていますね! よく読んでみます!
お礼
私も勉強がてらゲームを作ってみたいと思います。 大変参考になりました。ありがとうございます。