Excel VBA ベーシック 模擬問題 模擬試験

Excel VBA ベーシック 模擬問題 第10問  5章-4

 

次のコードは変数に値を代入するマクロである。

マクロを5回実行後のセルに表示される値はどれか、選択肢中から正しいものを解答えなさい。

Option Explicit

 Dim N As Integer

Sub Exam1()

 N = N+1

  Range("B1").Value = N

End Sub

1.セルB1に1が代入される

2.セルB1に5が代入される。

3.セルB1に0が代入される。

4.何もおきない。

 

正解

2

【5章 変数と定数】

解説

1. セルB1に1が代入される。

誤り。

初回実行時は正しいですが、5回目実行時の結果ではありません。

2. セルB1に5が代入される。

正しい。

変数Nはモジュールレベル変数として宣言されています。

モジュールレベル変数は、マクロが終了しても値が保持されます。したがって、Nの値はSubプロシージャを実行するたびに加算され続けます。

マクロを5回実行した場合の動作

初回実行:N = 0 + 1 → 1
→ セルB1に1が代入されます。

2回目:N = 1 + 1 → 2
→ セルB1に2が代入されます。

3回目:N = 2 + 1 → 3
→ セルB1に3が代入されます。

4回目:N = 3 + 1 → 4
→ セルB1に4が代入されます。

5回目:N = 4 + 1 → 5
→ セルB1に5が代入されます。

3. セルB1に0が代入される。

誤り。

→ 初回実行時のNは初期値0ですが、実行中に加算されるためこの結果にはなりません。

4. 何もおきない。

誤り。

→ コードは正しく記述されており、エラーもないためこの選択肢は誤りです。

【コード解説】

Option Explicit

Dim N As Integer

' モジュールレベル変数Nを宣言します。この変数はこのモジュール内のすべてのプロシージャで共有されます。

Sub Exam1()

 N = N + 1

' 現在のNに1を加算します。
' 初回実行時、Nは初期化されているため、初期値は0です。

  Range("B1").Value = N

' 加算後のNの値をセルB1に表示します。

End Sub