コード中の改行
VBA を使用している際、変数を同時にたくさん定義する場合や、関数の引数の定義する場合など、1 行に長いコードを記述しなければならないケースはないでしょうか?
この際、コードを途中で改行することができれば、プログラムの可読性を高めることが可能です。
この記事では、VBA でコードを途中で改行する方法について説明し、実際のプログラムと活用サンプルについても紹介します。
途中で改行する方法
VBA で改行を行うためには、コードの途中でスペース + アンダースコアを挿入することで次の行に続けてコードを記述することが可能です。
例えば、以下のようなコードがあった場合、
Sub Sample()
MsgBox "Hello, World!"
End Sub
途中で改行すると、以下のようになります。
Sub Sample()
MsgBox "Hello, " & _
"World!"
End Sub
活用シーン
関数の引数の定義
関数を定義する際、引数を多く必要としたり、Optinal
な引数を用意する場合、コードが長くなりがちです。
Public Sub SampleProcess(ByRef sheet As Worksheet, ByRef previousRange As String, Optional ByRef currentRange As String = "", Optional ByRef newRange As String = "")
' --------------
' ...処理部分...
' --------------
End Sub
これを改行した場合、以下のようになります。 変数の数と内容が整列され、可読性が向上します。
Public Sub SampleProcess( _
ByRef sheet As Worksheet, _
ByRef previousRange As String, _
Optional ByRef currentRange As String = "", _
Optional ByRef newRange As String = "")
' --------------
' ...処理部分...
' --------------
End Sub
複雑な IF 文
IF 文に複雑な条件を指定する場合も、1 行が長くなってしまうことがあるかと思います。
Sub SampleProcess(ByVal num1 as Long, ByVal num2 as Long, ByVal num3 as Long)
Dim result As String
If num1 > 0 And num2 > 0 And num3 > 0 And num1 + num2 + num3 > 50 Then
result = "True"
Else
result = "False"
End If
MsgBox result
End Sub
これを改行すると以下のようになります。 改行箇所は自由ですが、IF 文の場合は条件式ごとではなく、ある程度の文字数を基準に改行するほうが可読性が高いように思います。
Sub SampleProcess(ByVal num1 as Long, ByVal num2 as Long, ByVal num3 as Long)
Dim result As String
If num1 > 0 And num2 > 0 And _
num3 > 0 And num1 + num2 + num3 > 50 Then
result = "True"
Else
result = "False"
End If
MsgBox result
End Sub
注意点
VBA でコードを途中で改行することによって、可読性が向上することは前述の通りです。ただし、途中で改行する際には、以下のような注意点があります。
改行する位置に注意する
改行できるのは、単語と単語の間のみです
それ以外の箇所で前述した方法で改行した場合、意図しない動作をする可能性があります。
例えば、改行位置が文字列の途中である場合、文字列が途中で切れてしまう可能性があります。
インデントを揃える
途中で改行する際には、インデントを揃えることが望ましいです。サンプルで紹介した関数の引数がよい例かと思います。
インデントを揃えることによって、コードのブロックを区別しやすくなり、コードの可読性が向上します。
コード規約に従う
複数人が操作するような Excel ファイルの場合、「この条件で改行する」といったコード規約を統一しておくべきです。
プロジェクト内で一貫したコーディングスタイルを使用することで、可読性が高く、保守性が高いコードを書くことができます。
以上のような注意点を抑えて、VBA でコードを途中で改行することによって、可読性を向上させましょう。