他人が作ったVBAコードを読み解くには、全体をざっくり把握してから細かく読む、という順番が大切です。変数を日本語で考えたり、コメントを書き足したり、実際に1行ずつ動かしたりすることで、少しずつ理解できるようになります。
この記事では、5つのコツを順番に解説します。
- 全体構成をざっくり把握する
- 変数を日本語に置き換えてみる
- コメントを自分で書き足す
- 実際に動かしてみる
- 構造を図解してみる
コツ①:全体構成をざっくり把握する
まずはコード全体を眺めて、次のポイントを確認しましょう。
Sub ~ End SubのまとまりがいくつあるかForやIfなどの入れ子がどのくらい深いか- 変数がどこで宣言されているか
Sub Main()
Dim i As Long
For i = 1 To 10
If Cells(i, 1).Value <> "" Then
Call 処理A
End If
Next i
End Sub
このコードなら「Main というマクロが、A列の値が空でない行に対して処理Aを呼び出している」というのが全体の流れです。細かい処理の前に、まずこの「大きな流れ」をつかむことが大切です。
コツ②:変数を日本語に置き換えてみる
変数名が x や y など短い場合、「この変数には何が入っているか」を日本語で考えてみましょう。
Dim x As Long
Dim y As String
x = Cells(1, 1).Value
If x > 0 Then
y = "OK"
End If
この場合、x は「A1セルの値」、y は「判定結果」と読み替えると、「A1の値が0より大きければ判定結果をOKにする」という処理だとわかります。変数の中身を意識するだけでコードがぐっと読みやすくなります。
コツ③:コメントを自分で書き足す
コメントがないコードは読みにくいです。読みながら理解したことをコメントとして書き足していくと、理解が深まります。
' コメントなしの状態
For i = 1 To 10
If Cells(i, 1).Value = "" Then
Exit For
End If
Cells(i, 2).Value = i * 10
Next i
' コメントを書き足した状態
For i = 1 To 10
' A列のセルが空欄になったらループを終了する
If Cells(i, 1).Value = "" Then
Exit For
End If
' B列にi×10の結果を入れる
Cells(i, 2).Value = i * 10
Next i
自分の言葉でコメントを書くことで、理解しているかどうかも確認できます。
コツ④:実際に1行ずつ動かしてみる
眺めるだけでは分からないことも、実際に動かすとわかることがあります。VBAには1行ずつ実行する機能があります。
- F8キー(ステップイン):1行ずつ実行して動きを目で追えます。
- F9キー(ブレークポイント):特定の行で一時停止させて、そこまでの動きを確認できます。
- 変数にカーソルを当てる:実行中に変数にカーソルを合わせると、その時点での値がポップアップで表示されます。
たとえば繰り返しの中で i や Cells(i, 1).Value にカーソルを当てると、今何行目を処理しているか、セルに何が入っているかがすぐに確認できます。
コツ⑤:構造を図や紙に書き出してみる
条件分岐や繰り返しが複雑なときは、コードを眺めているだけでは理解が追いつかないことがあります。処理の流れを紙に書き出してみると、頭が整理されます。
If score >= 80 Then
result = "合格(優)"
ElseIf score >= 60 Then
result = "合格"
Else
result = "不合格"
End If
このような分岐は「scoreが85のときはどうなる?」のように、1つの具体的な値を当てはめてコードを追ってみましょう。1つの流れをしっかり追うことで、全体の意図がつかめてきます。
よくある読みにくいコードのパターン
変数名が短すぎる
繰り返しに使う i などは短くても問題ありませんが、シートや変数に意味がわかる名前をつけると読みやすくなります。例:ws_data(データシート)、lastRow(最終行)など。
SelectやActivateが多い
次のような書き方はシンプルに直せます。
' 読みにくい書き方
Range("A1").Select
Selection.Value = 100
' シンプルな書き方
Range("A1").Value = 100
まとめ
他人のVBAコードは最初は読みにくく感じますが、「型」を持って読むことで少しずつ理解できるようになります。
- コツ①:全体の流れをざっくり把握してから細かく読む。
- コツ②:変数を日本語で考えながら読む。
- コツ③:理解したことをコメントとして書き足す。
- コツ④:F8キーで1行ずつ実行して動きを確認する。
- コツ⑤:複雑な分岐は紙に書き出して整理する。
まずは怖がらずにコードに触れてみることが、理解を深める一番の近道です。
よくある質問
コードを読むのにどのくらい時間がかかる?
慣れるまでは時間がかかります。最初は短いマクロ(20〜30行程度)から読む練習をするのがおすすめです。短いコードで「読んで→動かして→理解する」を繰り返すことで、だんだん読むスピードが上がってきます。
コードを変更して動かなくなるのが怖い場合は?
変更前にコードをメモ帳などにコピーしてバックアップしておきましょう。また、試しに1行コメントアウト(行頭に ' をつけて一時的に無効化する)して動作を確認する方法も安全です。
コメントがまったくないコードはどこから読み始めればいい?
コードの一番上にある Sub がスタート地点ですが、大事なのは「このマクロは何をしようとしているのか」をSub名から推測することです。たとえば Sub PrintReport() なら「印刷に関する処理だな」と見当がつきます。
次に、Call で呼び出している別のマクロがあれば、そこで何をしているかを順番に追っていきましょう。コメントがなくても、Sub名や変数名から処理の意図が読み取れることが多いです。
F8キーで1行ずつ動かすとき、途中でやめるには?
VBAの編集画面で「実行」メニュー →「リセット」をクリックするか、ツールバーの「■(停止)」ボタンをクリックすると実行を止められます。また、Esc キーでも止まることがあります。
自分でコメントを書き足してもいい?
もちろんです。コメントはマクロの動作に影響しないので、自由に書き足して大丈夫です。読みながら理解したことを書き留めておくことで、後から見返したときにもわかりやすくなります。


