Excel VBA ベーシック 模擬問題 ランダム順出題 ② 第10問

次のコードは、変数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