このコード、何してる?
今回は、VBAを始めたばかりの方が「実際のコードを見て意味をつかむ」練習ができるよう、クイズ形式で例題を紹介していきます。自分なりに考えてから解説を読むことで、コードを読み解く力が自然と身についていきます。
練習1
Sub CheckNames()
Dim i As Long
For i = 2 To 11
If Cells(i, 1).Value = "" Then
Cells(i, 2).Value = "未入力"
Else
Cells(i, 2).Value = "入力済み"
End If
Next i
End Sub
質問
- このコードはどんな目的で使われていそうですか?
- B列にはどんな値が表示されるでしょうか?
解説
- 2行目から11行目までのA列をチェックしています。
- A列のセルが空欄なら「未入力」、そうでなければ「入力済み」とB列に表示されます。
- つまり「A列の入力状況を確認して表示するマクロ」です。
練習2
Sub SumData()
Dim total As Double
Dim i As Long
total = 0
For i = 2 To 11
total = total + Cells(i, 3).Value
Next i
Range("D1").Value = total
End Sub
質問
- どの列の値が対象ですか?
- 合計はどこに出力されるでしょうか?
解説
- C列(3列目)の2〜11行目を合計して、
totalに格納しています。 - 最終的にD1セルにその合計値が表示されます。
- これは「C列の数値合計をD1セルに表示するマクロ」です。
練習3
Sub HighlightScores()
Dim i As Long
For i = 2 To 11
If Cells(i, 2).Value >= 80 Then
Cells(i, 2).Interior.Color = RGB(200, 255, 200)
End If
Next i
End Sub
質問
- どのような条件で色が変わりますか?
- どのセルが対象ですか?
解説
- B列(2列目)のセルの値が80以上の場合、そのセルに薄緑色を設定します。
- 条件付き書式のような処理をVBAで実現している例です。
- これは「80点以上のセルを色で強調するマクロ」です。
まとめ
- どのセルを対象にしているかを明確にする
- 条件式が「何を判定しているか」を言葉にしてみる
- 結果がどこに出力されるのかをチェックする
コードを見たとき、「こういう意図だろうな」と考えるクセをつけることで、他人のコードも怖くなくなります。
今後は、少しずつ応用問題にも挑戦していきましょう!
