はじめに
VBAでコードを書いていると、1行が長くなりすぎて読みにくくなることがあります。
特に、長いIf文や複雑な関数呼び出しを記述する際に、改行の仕方によってコードの可読性が大きく変わります。ここでは、VBAでのソースコード改行の基本ルールとテクニックを紹介します。
1. 基本的なソースコードの改行方法(_の使い方)
VBAでは、アンダースコア(_)とスペースを使って、ソースコードの行を複数行に分割できます。
アンダースコアの左側には必ず半角スペースが必要です。
条件文を1行で書いた場合
1 2 3 |
If x > 0 And y < 100 And z = True Then MsgBox "条件を満たしました" End If |
条件文を複数行で書いた場合(右端に[ _]を付けて改行)
1 2 3 4 5 |
If x > 0 And _ y < 100 And _ z = True Then MsgBox "条件を満たしました" End If |
2. 文字列の改行方法(& _の使い方)
“abcccccc”のような文字列を改行する場合は、スペース + & + スペース + アンダースコア[ & _]で複数行に分割できます。
アンダースコアの前には必ず半角スペースが必要です。
1行で書いた場合
1 |
MsgBox "これは非常に長いメッセージで、1行に収まらないため、複数行に分けて記述しています。" |
複数行で書いた場合([ & _]で改行)
1 2 3 |
MsgBox "これは非常に長いメッセージで、" & _ "1行に収まらないため、" & _ "複数行に分けて記述しています。" |
3. 改行できる場所とできない場所
改行できる場所
- 演算子(+, -, And, Or など)の後
- 引数リストの途中
- Then の前
1 2 |
Result = (a + b + c + _ d + e) |
1 2 3 4 5 |
Call MyFunction( _ arg1, _ arg2, _ arg3 _ ) |
改行できない場所
- ドット(.)の直前や直後
- 文字列の途中(”abc” _ “def” は不可。結合は & を使う必要あり)
- With ステートメントのオブジェクト指定
NG例:
1 2 3 |
'// コンパイルエラーになる例 Worksheets _ ("Sheet1") |
3. どのようなときにソースコードの改行を入れるとよいか
一般的に、1行は80〜120文字程度に収めることが推奨されます。
また、複数行にした場合は、2行目以降はインデントを1文字単位で入れることが出来るため、コードの見やすさが向上します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'// インデントを揃える result = Application.WorksheetFunction.SumIfs( _ Range("C:C"), _ Range("A:A"), "東京", _ Range("B:B"), ">100") '// 論理的なまとまりでインデント If 条件1 Then If 条件2 And _ 条件3 And _ 条件4 Then '// 処理 End If End If |
現在ではマルチディスプレイで縦置きモニタでコードを見る方も結構おられます。
状況に合わせてソースコードの改行を行うかは検討してください。
4. よくある間違いと対処法
コードの右端にスペースを忘れるとエラーになります。
1 2 3 4 5 6 7 |
'// NG:スペースがない(エラー) MsgBox "test"_ "test2" '// OK:スペースがある MsgBox "test" & _ "test2" |
まとめ
VBAの改行は、コードの可読性を大きく向上させる重要なテクニックです。
基本ルールは以下の通りです。
- 行継続文字は「スペース + アンダースコア」
- 文字列を改行する場合は「スペース + & + アンダースコア」
- 1行は80〜120文字程度を目安にする。
- 複雑なIf文やSelect文は適切なインデントで構造を明確にする。
- 過度な改行は避け、可読性とのバランスを考える。
これらのポイントを押さえて、メンテナンスしやすいVBAコードを書いていきましょう。