次のコードは変数に値を代入するマクロである。
マクロを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