VBAのコードを読みやすくするポイントは「意味のある変数名をつける」「With構文でまとめる」「コメントを短く書く」の3つです。短いコードより「後から読んでも意味がわかるコード」を目指すことが、ミスを減らして修正しやすいマクロへの近道です。
この記事では、次の内容を順番に解説します。
- 読みやすいコードの基本ルール
- With構文でコードをまとめる方法
- コメントとインデントの使い方
- 慣れてきたら使える省略表現
読みやすいコードの基本ルールは?
コードを書くときに意識するポイントは4つです。
- 意味のある変数名をつける:
xやaよりlastRow(最終行)やwsData(データシート)のように、何が入っているかわかる名前にする。 - With構文でまとめる:同じオブジェクトを何度も書くときはWithでまとめる。
- コメントは短く要点だけ書く:「何をしているか」ではなく「なぜそうしているか」を書くとより親切。
- インデント(字下げ)を使う:IfやForの中身は字下げすることで、処理の構造が見えやすくなる。
With構文でコードをまとめるには?
同じシートやセルに複数の操作をするとき、With構文を使うと繰り返しの記述を省けます。
Withを使わない場合
Sub Sample1()
Worksheets("Sheet1").Range("A1").Value = "山田"
Worksheets("Sheet1").Range("B1").Value = "太郎"
Worksheets("Sheet1").Range("A1").Font.Bold = True
End Sub
With構文を使った場合
Sub Sample1_Clean()
With Worksheets("Sheet1")
.Range("A1").Value = "山田"
.Range("B1").Value = "太郎"
.Range("A1").Font.Bold = True
End With
End Sub
With の後に対象を書いて、中では .(ドット)から始めるだけです。どのシートを操作しているかが1か所にまとまるので、後から読んでもわかりやすくなります。
コメントとインデントの使い方は?
コメントとインデントはコードの読みやすさを大きく左右します。
コメントなし・インデントなしの場合
If x = 1 Then
DoSomething
End If
コメントあり・インデントありの場合
' xが1のときだけ処理を実行する
If x = 1 Then
DoSomething
End If
コメントには「処理の理由や条件の意味」を短く書くのがポイントです。「A1に値を入れる」のような動作の説明より「〇〇の場合だけ実行する」のような意図の説明の方が読む人の助けになります。
慣れてきたら使える省略表現
VBAには省略できる書き方もあります。ただし最初のうちは省略せずに丁寧に書く方が理解しやすいです。理由がわからないまま省略すると、後でコードを読み返したときに混乱しやすくなります。
If flag = True Then→If flag Then(Trueの省略)If flag = False Then→If Not flag Then(Falseの否定)Range("A1").Select→Selection.Value = 1→Range("A1").Value = 1(Selectを省略)
特にSelectの省略は処理が速くなるだけでなくコードもシンプルになるので、慣れてきたら積極的に使いましょう。
まとめ
読みやすいコードは「後から修正しやすいコード」でもあります。テクニックより先に「意味がわかるコードを書く」という姿勢を大切にしましょう。
- 変数名:何が入っているかわかる名前をつける。
- With構文:同じ対象への操作はWithでまとめる。
- コメント:処理の意図を短く書く。
- インデント:IfやForの中身は字下げして構造を見えやすくする。
- 省略表現:慣れてから少しずつ取り入れる。
よくある質問
With構文はどんなオブジェクトでも使える?
はい、シート・セル範囲・グラフなど様々なオブジェクトに使えます。ネスト(入れ子)にすることもできます。たとえば With Worksheets("Sheet1") の中に With .Range("A1") を入れることも可能です。
インデントはどうやってつける?
Tabキーを押すと字下げができます。VBAの編集画面では、If・For・Withの中身は自動でインデントされることもあります。ずれてしまった場合はShift+Tabで戻せます。
コメントはどこに書けばいい?
行の先頭に '(シングルクォート)をつけるとその行全体がコメントになります。コードの右側に ' をつけると、その行のコードの後ろにコメントを追加できます。処理のまとまりの前に書くのが一般的です。
変数名に日本語は使える?
使えます。Dim 最終行 As Long のように日本語で変数名をつけることもできます。日本語の方が意味がわかりやすい場合もありますが、英数字の変数名の方が一般的で他の人にも伝わりやすいことが多いです。
Select・Activateを使わない方がいい理由は?
SelectやActivateを使うとシートや画面の選択状態が変わるため、処理が遅くなったり予期しない動作が起きることがあります。Range("A1").Value = 1 のように直接指定する方がシンプルで速く、選択状態に影響されないので安全です。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



