【Excel VBA】プロジェクト?モジュール?プロシージャ?

Excel VBA

プロジェクト・モジュール・プロシージャ
この3つ、よくわからないままVBAを始めていませんか?

取り敢えず標準モジュール追加するって言われたし、、、
といって放置している事が多いですが、知っておいて損はないでしょう。

今回はこの3つの違いについてご紹介します。

スポンサーリンク

3つの違いについて例を挙げて解説!!

例えばですが、マクロを会社に見立てると、プロジェクト会社全体の事を表しています。

会社という組織の中には営業や経理など様々な部署がありますが、これはモジュールにあたります。

最後にプロシージャですが、これは担当の事を指しています。

スポンサーリンク

プロジェクトって?

プロジェクトはワークブックに一つしか存在しません。

プロジェクトの中にモジュールやプロシージャを作成していきます。
全てを囲う外枠をイメージして下さい。

他の人に見られたくないマクロを作成する時にはプロジェクトにパスワードを掛ける事で、パスワードを知っている人以外の閲覧・編集を防ぐ事が出来ます。

スポンサーリンク

モジュールって?

モジュールはプロジェクト内の部署のようなものです。

複雑なプログラムになる程、モジュールは増える傾向にあります。
小企業では部署が少ないけれど、大企業になると部署が細かく分かれていて大量にあるのと同じです。

モジュールの種類

モジュールはいくつか種類ありますので全て紹介します!!
マクロを作成する時は取り敢えず標準モジュールの認識で問題ありません。

他のモジュールはやりたい事が明確に決まっている時に使用しましょう。

ブックモジュール

ブックモジュールには、ワークブックのイベントを記述します。
例えば「ワークブックを開いたら自動でこの処理をする」のような事です。

よくある使い方ですが、ワークブックを開いたらブックを非表示にし、自分で作成した画面(ユーザーフォーム)を表示するといった使い方が出来ます。

シートモジュール

シートモジュールでは、ワークシートのイベントを記述します。

「この範囲のセルが変更されたら~」のような事を記述する事が出来ます。

標準モジュール

基本的にマクロはこの標準モジュールに記述します

また「マクロの記録」を利用した際も標準モジュールに記録されます。

フォームモジュール

フォームモジュールはユーザーフォームの作成や操作を記述するモジュールです。

ユーザーフォームでは独立した画面を表示してボタンを設置したりする事が出来ます。
自分で画面のレイアウトを決める事が出来ますが、どのボタンに何を割り当てるかも考える必要があります。

「操作に対して何を実行するか」をフォームモジュールでは記述します。
例えば「ボタンをクリックしたらこのマクロを実行する」といった操作が可能です。

クラスモジュール

VBAでクラスモジュールを利用する意味はあまりありません

「オブジェクト指向」聞いた事はありますでしょうか?
クラスモジュールを有効活用するのであれば必須の知識ですが、ここで簡単に説明出来るようなものでもないので説明は割愛します。

プログラマーになりたいのであれば止めませんが、業務の効率化が出来れば良いと思っているだけであれば、全く必要ないので勉強する必要はありません

ネットでVBAの記事を見ていると極稀に使用している方がいますので存在だけ覚えておきましょう。

私は未だにクラスモジュールを使った方が良いなと思った事がありませんし、標準モジュールで十分に戦えます。

スポンサーリンク

プロシージャって?

プロシージャは具体的にどういった処理をするか記述する場所です。
ここにVBAで処理を記述する事でマクロを作成する事が出来ます。

プロシージャの種類

プロシージャは3種類ありますので順番にご紹介します。

Subプロシージャ

基本的にマクロはこのプロシージャで作成します
よくわからない場合はSubプロシージャを使用しておけば問題ありません。

Functionプロシージャ

Subプロシージャと違い、戻り値を設定する事が出来ます
戻り値は簡単に言えば実行した結果です。

担当に1日あたり平均利益の計算をお願いしたのに、答えが帰って来なかったら意味がないですよね?
Functionを使用する事で計算した結果を、計算をお願いしていた所に戻す事が出来ます。

値を変えて同じ処理を何度もするような時によく利用します。

Propertyプロシージャ

このプロシージャはクラスモジュールとセットで使います。

クラスモジュール同様にVBAを極める事を目的としていない場合は勉強する必要はありません。

スポンサーリンク

まとめ

プロジェクトの中にモジュールがあって、モジュールの中に、プロシージャがあります。
まるでマトリョーシカですね笑

モジュールやプロシージャを適切に分ける事でプログラム内の整理整頓が可能になります。
同じモジュールに全てのプロシージャを入れると、修正したい時に該当箇所を見つけるだけで時間が掛かって大変です!

大規模なプログラムを作る時は機能毎に小分けにする等で維持管理が劇的に楽になりますので、機能や内容によってモジュールを分ける癖を付けておきましょう。

クラスモジュール関連の説明は全て割愛しましたが、業務内容によってはクラスモジュールを使った方が管理が楽になるといったメリットもあります。

しかし勉強量に見合った成果が出せるかというと微妙ですし、会社であれば引き継ぎが困難を極めます。

後任の事も考えると使用しない方が良いですね。

コメント

タイトルとURLをコピーしました