マクロは「動けばいい」ではない
Excel VBAでマクロを作るとき、最初のうちは「とにかく動けばいい」と思いがちです。しかし、動くことと、使いやすく・修正しやすいことは別の話です。
たとえば、同じ処理をする2つのマクロがあったとして、
- ひとつは誰が見てもわかりやすい
- もうひとつは本人しかわからない書き方
このとき、実務で価値があるのは前者の「見やすいマクロ」です。
「見やすいコード」がなぜ重要なのか、見やすいコードにするにできることを具体的に解説します。
読みにくいコードは「壊れやすい」
まず、次のコードを見てください。
Sub test()
i = 1:For j = 1 To 5:If j Mod 2 = 0 Then Cells(i, 1) = j:i = i + 1:Next
End Sub
動作としては「1〜5までのうち、偶数だけをA列に並べる」だけですが、
ぱっと見て内容がつかめない方も多いのではないでしょうか?
書き直した例
Sub WriteEvenNumbers()
Dim i As Long
Dim j As Long
i = 1
For j = 1 To 5
If j Mod 2 = 0 Then
Cells(i, 1).Value = j
i = i + 1
End If
Next j
End Sub
どうでしょうか?
同じ処理をしていても、ずいぶん読みやすくなったと思います。
なぜ読みやすさが重要なのか?
- 自分が数週間後に見ても内容を思い出せる
- 他の人が読んで、目的や処理内容を理解できる
- ミスに気づきやすく、修正しやすい
つまり、コードの見やすさ=保守性(メンテナンス)の高さでもあるのです。
書き方の工夫で「伝わるマクロ」になる
見やすいコードにするためのコツは、決して難しいものではありません。
ちょっとした心がけだけで、伝わるマクロに近づけます。
1. 変数名は中身が想像できるようにする
Dim a As Long
Dim b As Long
よりも
Dim rowIdx As Long
Dim evenNum As Long
と書いた方が、何をしているかが伝わります。
もちろん、カウント変数(1から順番に数字が変わるようなもの)は、短い方がいいので、1文字で表すことも多いので、一概には言えませんが、意味がある変数の場合には、変数名もわかりやすくしておくと理解しやすいです。
2. コメントは要点を簡潔に書く
' 1〜5の中で偶数をA列に表示
とだけ書くだけでも、読み手が理解する助けになります。
3. 1行に複数の処理を詰め込まない
悪い例
If a > 0 Then b = b + 1:MsgBox "OK"
良い例
If a > 0 Then
b = b + 1
MsgBox "OK"
End If
1行で済ませようとすると、後から見たときに非常にわかりにくくなります。
4. 空行やインデントで構造を見える化する
Sub Sample()
Dim i As Long
For i = 1 To 10
If i Mod 2 = 0 Then
Debug.Print i
End If
Next i
End Sub
このようにインデント(字下げ)をきちんとするだけで、構造が一目でわかるようになります。
実装するメリット
ここまでで、コードの見やすさを意識するとどんな良いことがあるのかを整理しておきましょう。
メリットまとめ
- 自分も他人も読みやすくなる
チーム作業でも使いやすい - 修正・追加がしやすくなる
バグが見つかっても安心 - 将来の自分を助けてくれる
1ヶ月後に「なんだこれ?」とならない - トラブルの原因が減る
意図を間違って伝えることがなくなる - 初心者から抜け出す第一歩になる
読み手を意識したコードを書く習慣がつく
まとめ
マクロが正しく動くことはもちろん大事です。
でも、それ以上に大切なのは「そのコードが何をしているのかが読めること」です。
読みやすいコードを書くことは、一見ゆっくりに見えて、実は一番速い道です。
あとで困らない、チームで使いやすい、バグも見つけやすい。そんなマクロを書くためにも、「読みやすさ」を意識してみてください。
