次のコードは、変数Aをどのモジュールでも使用できるパブリック変数として宣言し、
変数Bはモジュール内のすべてのプロシージャで内でのみ使えるようにするモジュールレベル変数として宣言するマクロである。
空欄を埋める適切な語句の組み合わせとして正しいものを選択肢から1つ選びなさい。
—————————————————
Module1
—————————————————
Option Explicit
【 空欄① 】 A As Long
【 空欄② 】 B As Long
Sub Exam1()
A = 150
B = 180
Call Exam2
End Sub
Sub Exam2()
Dim N As Long
N = A + B
MsgBox N
End Sub
——————————————-
Module2
——————————————-
Option Explicit
Sub Exam1()
A = 200
MsgBox "変数Aは" & A & "です"
End Sub
1. ① Public ② Dim
2. ① Dim ② Public
3. ① Public ② Long
4. ① Long ② Dim
正解
1
解説
【5章 変数と定数】
●Dim・・・ ローカルまたはモジュールレベル変数です。
ローカル変数では宣言したプロシージャ内でのみ、モジュールレベル変数では宣言したモジュール内でのみ使用できる変数です。
●Public・・・ パブリック変数です。別のモジュールでも使用できる変数です。
次のコードは、変数Aをどのモジュールでも使用できるパブリック変数として宣言し、変数Bはモジュール内のすべてのプロシージャで内でのみ使えるようにするモジュールレベル変数として宣言するマクロである。
空欄を埋める適切な語句の組み合わせとして正しいものを選択肢から1つ選びなさい。
1. ① Public ② Dim
正しい。
Publicステートメントを使用して宣言された変数は、すべてのモジュール内のすべてのプロシージャで使用できます。 また、Dimステートメントを使用して宣言された変数は、宣言されたモジュール内のすべてのプロシージャで使用できます。
2. ① Dim ② Public
誤り。
DimステートメントとPublicステートメントの位置が反対です。
3. ① Public ② Long
誤り。
Longは変数の型を指定するものであり、変数の適用範囲を指定するものではありません。
4. ① Long, ② Dim
誤り。
Longは変数の型を指定するものであり、変数の適用範囲を指定するものではありません。
【変数の適用範囲と使用ステートメント】
変数 | 変数の適用範囲と使用ステートメント |
ローカル変数 | 宣言したプロシージャ内適用
Dimステートメント ・Dim 変数名 As 変数の型 |
モジュールレベル変数 | 宣言セクションで宣言したモジュールの全プロシージャ適用
Dimステートメント ・Dim 変数名 As 変数の型 |
パブリック変数 | 宣言セクションで宣言したモジュールや別のモジュールで適用
Publicステートメント ・Public 変数名 As 変数の型 |
●宣言セクションの範囲
Option Explicit
↑
宣言セクション範囲
↓
Sub Exam1()
【コード解説】
——————————————-
Module1
——————————————-
Option Explicit
Public A As Long
' パブリック変数です。別のモジュールでも使用できる変数です。
Dim B As Long
' モジュールレベル変数です。宣言したモジュール内でのみ使用できる変数です。
Sub Exam1()
A = 150
B = 180
Call Exam2
' 別プロシージャを呼び出します。この時点でAは150、Bは180です。
End Sub
Sub Exam2()
Dim N As Long
' ローカルレベル変数です。宣言したプロシージャのみ使用できる。
N = A + B
' パブリック変数Aとモジュールレベル変数Bの合計を計算します。
MsgBox N
' 計算結果(330)が表示されます。
End Sub
——————————————-
Module2
——————————————-
Option Explicit
Sub Exam1()
A = 200
' パブリック変数Aに新しい値を代入します。
MsgBox "変数Aは" & A & "です"
' ここでは"A = 200"が表示されます。
End Sub