コードを書いているときは、変数の意味も処理の流れも頭に入っています。
しかし、その記憶は時間とともに急速に薄れます。数か月後に見返したとき、自分が書いたコードなのに読み解けない、という経験は珍しくありません。この記事では、コメントを書くべき理由と、どの程度・どこに書けば効果的かを整理します。
コメントがないコードで起きること
変数名がx、yのように抽象的で、処理名も内容を表していない場合、数か月後にそのコードを見返しても、何をしているのか把握するまでに時間がかかります。
Sub Process1()
Dim x As Long
Dim y As String
x = Cells(Rows.Count, 1).End(xlUp).Row
y = Cells(2, 3).Value
If y = "済" Then
Rows(2).Delete
End If
End Sub
このコードは動作しますが、xが何を表す変数か、yが何と比較されているのかは、コードを一行ずつ追わないと分かりません。コメントも変数名も、後から読み解く手がかりを何も残していない状態です。
コメントと変数名を加えると何が変わるか
Sub Process1()
'最終行を取得
Dim ls_rw As Long
ls_rw = Cells(Rows.Count, 1).End(xlUp).Row
'C列のステータスを確認
Dim status As String
status = Cells(2, 3).Value
'「済」なら行を削除
If status = "済" Then
Rows(2).Delete
End If
End Sub
変数名をls_rw(最終行)、status(状態)に変え、処理のかたまりごとに一行コメントを添えるだけで、同じ処理でも読み解く時間が大きく短縮されます。
コメントは誰のために書くのか
コメントは、他人に引き継ぐときだけのものではありません。
数か月後にコードを読み返す、自分自身のために書くものでもあります。コードを書いている最中は「なぜこう書いたか」という文脈が頭の中に残っていますが、その記憶は1週間もすればかなり薄れます。コメントは、その消えていく文脈をコードの中に保存しておく作業です。
押さえておきたいこと
① 「何をしているか」より「なぜそうしているか」を書く
Cells(Rows.Count, 1).End(xlUp).Rowというコード自体は、読めば「最終行を取得している」と分かります。それよりも、なぜここで最終行が必要なのかという理由を書いておく方が、後から見返したときに役立ちます。
② 処理のかたまりごとに、一行で十分
一行ずつコメントを付ける必要はありません。「ここからここまでは何のための処理か」という単位で、区切りごとに一言添えておけば十分です。
③ 変数名も、コメントの役割を持つ
xやyのような名前は、コメントを読むまで意味が伝わりません。ls_rwやstatusのように、名前自体が説明になっていれば、コメントの分量自体を減らせます。
まとめ
コメントは、数か月後の自分を含めた「未来の読み手」のために書くものです。処理のかたまりごとに一行、なぜそうしているかを書き添えるだけで、コードの読みやすさは大きく変わります。体系的に学びたい方は、JIMOVEの動画講座もご活用ください。
よくある質問
Q. コメントは、コードの全ての行に書くべきですか?
すべての行に書く必要はありません。処理のかたまりごとに、何を目的とした処理かが分かる単位で書けば十分です。
Q. コメントと変数名、どちらを優先して直すべきですか?
優劣はありませんが、変数名を分かりやすくすることで、必要なコメントの量自体を減らせます。両方を組み合わせるのが効果的です。
Q. 既存のコードに、後からコメントを追加してもいいですか?
問題ありません。コードを読み解きながら、理解できた部分から順にコメントを追加していく方法は、コードを読み解く練習としても有効です。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



