オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

【Excel VBA エキスパート ベーシック】モジュールについて (VBA入門2)

 

モジュールとは

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の宣言などはオブジェクトモジュールではなく、標準モジュールに記述する必要がある。