66343views女子高生社長の椎木里佳さんがパクリ謝罪。約3分29秒ExcelのVBEにおいて、VBAを記述する際、ワークシート・ワークブックなどのモジュールに書き込まず、基本的には標準モジュールを設置して記述します。新規にモジュールを追加しようとすると、標準モジュールとクラスモジュールの二種類が出てきて、ちょっと迷ってしまいます。標準モジュールとクラスモジュールの二つにはそれぞれに違いがあり、結論としては、基本は標準モジュールを使用すればOKで、オブジェクト指向の設計をする場合はクラスモジュールを利用する、という感じです。詳しくは下記にまとめてみました。標準モジュールとクラスモジュールの違いVBAでは基本的に標準モジュールを使えばOKVBAの記述では、基本的に標準モジュールを使うと覚えてOKです。エクセルの操作をあれこれ実現したいだけであれば、標準モジュールに記述すれば、ほとんど可能だからです。・標準モジュールで定義したフィールドおよびメソッドはクラススコープとなる・標準モジュールではオブジェクト生成、newによるインスタンスはできない。(クラスモジュールを利用してのオブジェクト生成、newによるインスタンスは可能です。)要するに、オブジェクト指向の設計が必要でなく、単にエクセル作業をマクロで自動化したいなどのニーズであれば、定数・ユーティリティを作成するだけですので、標準モジュールの利用だけでコト足りるということです。void~みたいな感じです。)クラスモジュールはオブジェクト指向設計の実現に利用するオブジェクト指向の設計をしない場合、クラスモジュールを使う必要がありません。VBAでは、Workbook、Worksheet、Rangeの三種のオブジェクトが用意されていますが、これ以外に、新たにオブジェクトの概念を追加しようとする場合、クラスモジュールを利用する必要があります。・クラスモジュールではオブジェクト生成(newによるインスタンス)ができる・クラスモジュールで定義したフィールドおよびメソッドはインスタンススコープとなる(オブジェクトごとに持つ値)・その他、あれこれVBAならではの制限アリJavaなどを使っている人であれば、VBAのマクロ作成時にオブジェクト指向の感じで作っていくと扱いやすいのかなと思います。逆にオブジェクト指向をよく分からない人は、クラスモジュールを利用せず、体当たり的に標準モジュールにコード記述していけば良いかと思います。いえ、コンストラクタの引数が取れなかったり、継承クラスが非推奨だったりの制限があるので、こだわってオブジェクト指向の設計をしたいのであれば、いっそjava側で実装してしまったほうが良いのでは・・・とも思ってしまいますが、まあケースバイケースなのかと思います。ワークシート・ワークブックなどのモジュールでなく、標準モジュールを使う理由ワークシート・ワークブックなどのモジュールに書き込むと、エラーが発生した時、コードのどこに問題があったか調べることができません。対して、標準モジュールに書き込んだ場合、デバッグ時、エラーが出た時に該当するコードの箇所がカンタンに追跡できます。これだけでも標準モジュールを使った方が便利なことは分かるかと思います。ワークシートなどに書き込んでしまうと、シートの切り換えなどで不都合が起きかねないので、やはり概念上、上位のポジションにある標準モジュールで管理したほうが良いように思います。参考リンク▼正直、こちらのサイト様見れば、すべて丸わかりです。詳しい・・・!http://members3.jcom.home.ne.jp/daruma_kyo/aboutooa/vba_module.htmlまとめVBAでは基本、標準モジュールと覚えておけばOKかと思います。知識を得たい人は、いったんオブジェクト指向を学んでからVBAの勉強をすると効率的だと思います。クラシックモダン・コンピューティング)モジュールの解放って、なんかかっこいい。BLÅがオシャレで高音質!PROFILEWEB制作をやっているyoshiと申します。PVは月間10万程度。過去、エンジニアの頃は、MATLAB/simulink/VBA/C/C++など扱っていました。生産管理、MECE、オブジェクト指向など、当時に得た知識はweb業界に入っても、かなり役立っています。