スタイル

コードはシートモジュールに書く

VBAの達人たちは、その多くがマクロのコードを標準モジュールに書くことを推奨しています。

しかし、VBAアセットでは、コードは、シートモジュールに書くというスタイルを採っています。その理由は、次の2つです。

  • そのシートに関係の強いプロシージャをそのシートモジュール内に記載できるので、マクロ全体の構造が分かりやすくなる。
  • CellsやRangeの前にシート名を指定しなくても、それが書かれたシートが指定されたことになるので、コードをシンプルにすることができる。

そもそも、VBE(ビジュアル・ベーシック・エディタ)は、主にシート・モジュールを使うことを前提に作られているようにも思えます。

エディターの画面を見てください。左上のプロジェクトと書かれているエクスプローラーのようなウィンドウには、Sheet1とThisWorkbookというフォルダのようなものが表示されています。このうちSheet1のようにブックの各シートに割り当てられたモジュールのことをシートモジュールと言います。この最初の状態では、標準モジュールなんて、表示されていません。
今、プログラムで動かしたいのがSheet1だとすると、ここをクリックしたくなりますよね。クリックするとSheet1にプログラムが書けるようになります。
つまり、VBAのエディター自体は、それぞれのシートにプログラムを書くことを原則にしているかのような作りになっているのです。

ただし、シートモジュールにコードを書くことが適さない場合もあります。マクロをテンプレート・ファイルに登録して、マクロが記載されたファイル以外をコントロールする場合には、標準モジュールにコードを書くべきでしょう。また、前述の参考記事にも記載されていますが、シートモジュールでは、Public変数を宣言できないことにも注意が必要です。

コメント

  1. 管理人 より:

    Public変数を宣言できないことについて、記述を追加しました。

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