標準モジュールとシートモジュールの違い最終更新日:2015-01-03標準モジュールとシートモジュールの違いエクセルVBAを初めての人に教えるとき、まずは標準モジュールを挿入して、そこに書きましょう、と教えます、しかし、時に間違ってシートモジュールに書いてしまう事があります。「どこが違うんですか?」これらになります。「今はその違いについて説明しても混乱するだけですから、とにかく標準モジュールに書いてください。」このようにお伝えしています。いえ、イベント等でシートモジュールを扱うようになったら、その違いは正確に理解して置きたいところです。以下では、標準モジュールとブックモジュールとシートモジュールの違いを列挙的に説明します。用語的には、若干の独自補正を加えています。正式用語を羅列しても理解しずらく、それで理解できる人にはそもそも説明が不要だからです。■書かれている場所(属している所)の違い・標準モジュール:ブックに属しています・ブックモジュール:ブックに属しています・シートモジュール:シートに属していますつまり、シートをコピーすれば、シートモジュールも一緒にコピーされます。これを逆手にとって、シートモジュールに意図的に記述することで、他のブックにマクロVBAをコピーすることもできます。■シート省略時のRangeオブジェクト・標準モジュール:アクティブブックのアクティブシート・ブックモジュール:アクティブブックのアクティブシート・シートモジュール:シートモジュールが記載されているシートもちろん、ブック・シートを指定していれば、これらは同じ動作になります。本来はブック・シートはしっかり指定すべきす。基本通りにブック・シートを指定していれば、この違いはあまり気にする必要はありません。・ブックモジュール:Public変数は無効となりPrivate扱いとなる・シートモジュール:Public変数は無効となりPrivate扱いとなる「第108回.変数の適用範囲」も参照してください。■デバッグ時の違いここは、実際のエラーダイアログを見てください。・標準ジュール:このようなダイアログが表示され、「デバッグ」押下で、VBAの当該行が黄色反転表示されます。・ブックモジュール:・シートモジュール:「デバッグ」がなく、当該VBA行が不明です。以上、簡単に説明しましたが、シートモジュールを使う必要・使う理由は以下の二つになります。・シートのイベント処理を書く・シートのコピーと一緒にマクロもコピーするこのどちらかの理由がない限り、シートモジュールを使う必要性はなく、使うべきではありません。標準モジュールとシートモジュールの違いこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。