【Excelマクロ】他人の作ったマクロを引き継ぐときの心得

他人が作ったVBAコードを読み解くには、全体をざっくり把握してから細かく読む、という順番が大切です。変数を日本語で考えたり、コメントを書き足したり、実際に1行ずつ動かしたりすることで、少しずつ理解できるようになります。

この記事では、5つのコツを順番に解説します。

  1. 全体構成をざっくり把握する
  2. 変数を日本語に置き換えてみる
  3. コメントを自分で書き足す
  4. 実際に動かしてみる
  5. 構造を図解してみる

コツ①:全体構成をざっくり把握する

まずはコード全体を眺めて、次のポイントを確認しましょう。

  • Sub ~ End Sub のまとまりがいくつあるか
  • ForIf などの入れ子がどのくらい深いか
  • 変数がどこで宣言されているか
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を呼び出している」というのが全体の流れです。細かい処理の前に、まずこの「大きな流れ」をつかむことが大切です。

コツ②:変数を日本語に置き換えてみる

変数名が xy など短い場合、「この変数には何が入っているか」を日本語で考えてみましょう。

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キー(ブレークポイント):特定の行で一時停止させて、そこまでの動きを確認できます。
  • 変数にカーソルを当てる:実行中に変数にカーソルを合わせると、その時点での値がポップアップで表示されます。

たとえば繰り返しの中で iCells(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 キーでも止まることがあります。

自分でコメントを書き足してもいい?

もちろんです。コメントはマクロの動作に影響しないので、自由に書き足して大丈夫です。読みながら理解したことを書き留めておくことで、後から見返したときにもわかりやすくなります。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール