• ベストアンサー

グローバル変数などについて

Option Explicit Dim str1 As String '・・・(1) Sub テスト() Dim str2 As String '・・・(2) str1 = "テスト1" str2 = "テスト2" MsgBox str1 MsgBox str2 End Sub (1)はグローバル変数と言うとの事ですが (2)は何変数と言うのでしょうか? ローカル変数ですか? また、(1)がdimではなく、 Public str1 As String となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

1はモジュールレベルで宣言された変数、またはパブリック変数と言います。 2はプロシジャレベルで宣言された変数と言います。ローカル変数という言い回しが使われる事も確かにあります。 表に出したdimで宣言された変数はモジュールレベルでパブリックなので、他のモジュールにまでは範囲がありません。 publicステートメントで宣言された変数は、プロジェクトの全てのモジュールから参照できるパブリック変数です。 Module1: dim a public b sub macro1() ’最初に実行する a = 100 b = 200 end sub sub macro2() debug.print a ’モジュール内ではどちらもパブリックなので参照される debug.print b end sub module2: sub macro3() debug.print a ’aはmodule2に対してパブリックではないので参照できない debug.print b end sub

CMUYFNTIV
質問者

お礼

大変わかりやすい説明ありがとうございます。 自分で検証してみたところ、同じようになりました。