• ベストアンサー

ExcelのVBAでの変数の範囲指定について

Excel2010を使っている者です。 VBAでの変数の範囲指定についてわからない点があるのでお願いいたします。 私の使っている参考書に「プロジェクト内のどこでも有効な変数は、プロシージャの中ではなく、モジュールの一番上で、Publicと付けて宣言するように」と書いてあったのですが、プロジェクト内とはどういう意味でしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

プロジェクト内=1つのブックの全てのモジュール、プロシジャで、、、 Excel VBAの構造(プロジェクト、モジュール、プロシージャ) http://macoto.blog.so-net.ne.jp/2008-10-03 VBAの構造 プロジェクトに複数のモジュールが格納され、モジュールに複数のプロシージャが格納される。 プロジェクトはひとつのブックに対応する。 モジュールはシートやフォームなどに対応するまとまりのこと。 プロシージャはプログラムの最小単位。モジュールに書き込む。SubプロシージャとFunctionプロシージャがありFunctionプロシージャは戻り値がある。 両方とも引数を渡せる。 SubプロシージャはCallで呼び出す。(メンテナンス性がよくなるので)

qazxcvfr4
質問者

お礼

丁寧な説明をありがとうございます。

その他の回答 (2)

回答No.3

こんにちは。 すでに、他の方が熱心に回答されているので、あえて書く必要もないかもしれませんが、少し違った角度で触れておきます。 「プロジェクトは何?」とお聞きなっている時点では、そのテクニックは、あまり覚えなくてもよいものです。ふつうは、プロジェクトの説明がどこかに書かれているはずです。インデックスはついてないのでしょうか。 一応、全体的なことを説明させていただきます。 必要な言葉として、モジュールの種類を大別すると、標準モジュールとオブジェクトモジュールと、2つに分かれると思ってください。オブジェクトモジュールとは、Sheet モジュール、ThisWorkbook モジュール、UserForm モジュール、Classモジュールです。 プロジェクトというのは、そのブック(ThisWorkbook)の全体のVBAのモジュールのことを指します。つまり、標準モジュールとオブジェクトモジュールです。 それで、「プロジェクト内のどこでも有効な変数」というのは、パブリック変数と呼びますが、それは、標準モジュールのプロシージャの外、モジュールの先頭に書いたものに限ります。しかし、Public と、特に明記しなくても、パブリック変数になっています。Public キーワードというのは、コードを後で読んだ時や検索した時に、それが何か分かるためにつけるものです。 それらをサポートする(変数が使える)ものです。では、違うブックに対してはどうかというと、サポートしていません。なお、複数のプロジェクト(複数のブックがある場合)は、プロジェクト・グループと呼んでいます。 では、オブジェクトモジュールに書いたらどうなるか、それは、そのモジュール内だけで通用する変数です。 言葉にすると、とてもややこしくなりますが、実際に、試してみたほうが早いです。

qazxcvfr4
質問者

お礼

ありがとうございます。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

プロジェクトとは、ぶっちゃけた言い方をすると 「その時点で動作しているブック」と考えれば だいたいの場合オッケーです。 正確に言えば違うんですけどね・・・。 先頭モジュール(例えばModule1)でPublic宣言を すれば、全てのモジュール内でそのまま値を引き 継いで動作します。

qazxcvfr4
質問者

お礼

ありがとうございます。

関連するQ&A