サブルーチンやForNext,if等の繰り返し使うものはクラスモジュールを使った方がいいでしょうか?
サブルーチンやForNext,if等 と クラスモジュールは次元の違うものですので、クラスモジュールに置き換えたとしても無意味な場合が多いでしょう。
クラスモジュールにすれば読みやすくなるというわけではなく書き方や設計次第です。
ExcelやAccessは標準でいろいろな機能をもっていますが、それらがひとつのクラスといえますので、まずは、それをうまく使うとシンプルかつ高速な処理になります。
ExcelやAccess自体が高機能ですのでVBAでクラスモジュールが必須になるような処理は実はそれほど多くない思います。
大規模で多機能なものを作成するときにクラスモジュールが効果がある場合がありますが、かなりのスキルが必要になります。
1つのモジュール内にプロシージャが沢山あり、読みにくくなってしまいました(プロシージャやサブルーチンが増えてしまい、どれを参照しているか、使っていないかがわからなくなってきました)
まずは、プロシージャを役割に応じて適切なモジュールに分けてグループ化する。プロシージャの名前を分かり安いものにする、プロシージャを適切なブロックで分割する。など、読みやすくする方法はいろいろあると思います。
また、サブルーチンを呼び出しているところは、そこにカーソルを置いて右クリック→定義(あるいは、SHuft+F2)でサブルーチンのコードへジャンプできます。右クリック→元の位置へ移動(あるいは、Ctrl+Shift+F2)で呼び出し元に戻ることができます。
まずは、上記の点を活かして読みやすい設計ができるようになってください。
それでできるスキルがない状態でクラスモジュールに手を出しても、かえって複雑になって読みにくくなる可能性大だと思います。
一つ、クラスモジュールを使うと確実に効果的なのは、同じような役割のコントロールが多数あり、そのイベント処理を共通化したい場合ですね。下記のリンクが参考になるでしょう。
複数のコントロールのイベントを一つのプロシージャにまとめる(ExcelVBA) - パソコンカレッジ スタッフのひとりごと
ExcelVBAでControlオブジェクトのChangeイベントを一括制御する方法 *Ateitexe
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/25 09:25