モジュールとは
VBAのコードを記述するエリアをモジュールといいます。
モジュールはオブジェクトごとに用意されています。
※オブジェクトとは、対象物、主体などの意味で、Excelを構成する部品であり、VBAの操作対象です。
オブジェクトにはセルのRangeオブジェクト、セルが存在するシートのWorksheetオブジェクト、シートが存在するWorkbookオブジェクトがあります。
Excel自身もApplicationオブジェクトです。
モジュールを持つオブジェクト
ブック:Workbookオブジェクト
シート:Sheetオブジェクト
フォーム:UserFormオブジェクト
シートのモジュールでは、ワークシート(Worksheetオブジェクト)のモジュールが一般的によく使われるが、グラフ専用のグラフシート(Chartオブジェクト)にもモジュールが用意されています。
オブジェクトに属さないモジュール
標準モジュール
クラスモジュール:クラスを定義するときに使う特別なモジュール
VBAのモジュールへの記述ルール
①イベントを利用するマクロはオブジェクトのモジュールに記述する
例えば、ワークシートをアクティブにすると、アクティブになったワークシートでActivateイベントが発生します。
イベントを利用して、ワークシートが切り替わったときに自動的に起動するようなマクロは、Worksheetオブジェクトのモジュールに記述します。
②上位オブジェクトの省略
上位オブジェクトを省略したときには、記述したモジュールによって動作が異なります。
<例:Rangeオブジェクトの上位オブジェクト省略>
Range("A1").Value = 500
例えば上のようにRangeオブジェクトの上位オブジェクトを省略したときは、以下のようなルールになります。
Worksheetオブジェクトのモジュールに記述した場合
⇒WorksheetオブジェクトのセルA1とみなされます。
標準モジュールに記述した場合
⇒アクティブシートのセルA1とみなされます。
③宣言できる変数などの制限
すべてのモジュールで使用できる変数、定数、ユーザー定義型、APIの宣言などはオブジェクトモジュールではなく、標準モジュールに記述する必要がある。