変数を宣言するには、Dimステートメントを実行します。Sub Sample1() Dim buf As String buf = "tanaka" MsgBox buf End Sub一般的には、上記のようにプロシージャの内部で変数を宣言することが多いです。 このように、プロシージャの内部で宣言した変数は、宣言したプロシージャでしか使用できません。 上記の変数bufは、他のプロシージャで値を設定したり参照するとコンパイルエラーになります。 このような、プロシージャの中で宣言した変数を「ローカル変数」や「プロシージャレベル変数」などと呼びます。 複数のプロシージャで、同じ変数を共有するには、モジュールの宣言セクションで変数を宣言します。Dim buf As String Sub Sample1() buf = "tanaka" Call Sample2 End Sub Sub Sample2() MsgBox buf End SubSample1を実行すると、Sample2が呼び出されて、Sample1で変数bufに格納した文字列"tanaka"が表示されます。 複数のプロシージャで変数を共有できたわけです。 宣言セクションで、Dimステートメントを使って宣言した変数は「モジュールレベル変数」または「プライベート変数」などと呼ばれます。 実はVBAには、プライベート変数を宣言するためのPrivateステートメントもあります。 宣言セクションで、Dimステートメントで宣言した変数と、Privateステートメントで宣言した変数は、どちらも同じ「プライベート変数」になります。Private buf As Stringこのように、モジュールの宣言セクションで宣言した変数は、そのモジュール内のすべてのプロシージャで使用できます。しかし、この変数は「別のモジュール」で使用することはできません。 複数のモジュールで同じ変数を共有するには、変数の宣言に「Dimステートメント」ではなく「Publicステートメント」を使います。Public buf As Stringこのように、すべてのモジュールで使用できる変数を「パブリック変数」あるいは「パブリックモジュールレベル変数」などと呼びます。