• 締切済み

Excel VBAでグローバルな変数はどこで宣言すべきか?

Excel VBAについての質問です(もしかするとExcelに限った話ではないかもしれません)。 宣言セクションで変数の宣言を行うとき、Publicステートメントをつけた場合の適用範囲(グローバルな範囲)がわかりません。 これは、Sheet、ThisWorkbook、標準モジュールなど、それぞれの宣言セクションの場合で違うのでしょうか? また、宣言が有効になるタイミングも違うのでしょうか? ネットで調べたり、本で調べたのですが、私の理解が不足しているのか、矛盾して書かれているように思います。 一方では全てでグローバルにあるように書かれているように思え、一方ではグローバルになる範囲が違うとかかれているように思うのです。 試してみてもいいのですが、確証がもてないままこれから使い続けるのは気持ち悪いので・・・。 ご回答いただけると幸いです。よろしくお願いします。

みんなの回答

  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

>なぜ標準モジュールに書かないといけないのか、SheetやThisWorkbookでいけない理由がわかりません 例えば、 「Sheet1のイベントをSheet3に書いたらSheet1のイベントが動作しない、なぜ?」との質問に 「Sheet3ではSheet1のイベントを受け取れないから」と答えたとしましょう。 そうすると次の疑問が出てきますよね。 「なぜSheet3ではSheet1のイベントを受け取れないの?」 これにはどう答えたらいいでしょうか、 誰も答えられない、か、敢えて答えるとしたら、 「VBAの文法でそう決まっているから」と答えるしかないですよね。 で、お礼の文言は、上記例の2番目の類の疑問になりますから、 「それはVBAの文法、決まりごと」が、答えです。 ここでひとる質問者にお訊ねします。 例えば、BとCの値を足しAに入れる場合、ふつうに   A=B+C と書いていると思いますが、数学のように   B+C=A と書いては「なぜ」ダメなんでしょうか? ●これについて「なぜ」と思ったことはありませんか? どう答えられますか? 以上です。  

noname#224929
質問者

お礼

ご丁寧にご回答ありがとうございます。 ですが、少々嫌味がきつすぎるように思うのですが、いかがでしょうか? 今後、私と同じように初心者の方が困って投稿することがあると思います。 その際には、もう少しやさしさをもったご回答をいただけると幸いです。 よろしくお願いいたします。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんばんは。 Publicは、標準モジュールの宣言セクションに書きます。   以上です。  

noname#224929
質問者

お礼

ご回答ありがとうございました。 ですが、いただいたご回答ではなぜ標準モジュールに書かないといけないのか、SheetやThisWorkbookでいけない理由がわかりません。 もしよろしければ、補足いただけると幸いです。

関連するQ&A