VBAで長いコードを途中で改行する

VBA のコードを記述する場合、コードは改行までが一つの処理として扱われます。コードの途中で単に改行してしまうとエラーとなってしまいますが、アンダーバーを使ってコードが次の行へ続いていることを表すことができます。ここでは VBA でコードを途中で改行する方法について解説します。

※ セルに入力した文字列を途中で改行したり、メッセージボックスで表示される文字列を途中で改行する方法については「VBAで改行する」を参照されてください。

(Last modified: )

コードを途中で改行する方法

例えば複数のコードをプロシージャ内に記述する場合、それぞれのコードは改行までが一つのコードとして扱われます。

Sub プロシージャ名()
    Range("A1").Value = 10
    Range("A2").Value = 20
    Range("A3").Value = 30
End Sub

この場合は Range("A1").Value = 10, Range("A2").Value = 20, Range("A3").Value = 30 の 3 つのコードが順に実行されることになります。

もしも 1 つの行に複数のコードを記述したい場合は、どこからどこまでが 1 つのコードなのかを示すため処理と処理の間にコロン( : )を記述することで1つの行に複数のコードを記述できます。

Sub プロシージャ名()
    Range("A1").Value = 10 : Range("A2").Value = 20
    Range("A3").Value = 30
End Sub

このように VBA では改行までが 1 つのコードとして扱われるので、長いコードを記述する場合でも途中で改行してはいけません。例えば Range("A1").Value = 10 というコードを次のように記述するのは誤りです。

Sub プロシージャ名()
    Range("A1").Value
        = 10
End Sub

この場合、 Range("A1").Value= 10 は別の処理と見なされます。そしてどちらも文法的に間違っているためエラーとなってしまいます。

コードを途中で改行する方法(1)

長いコードを途中で改行したい場合には、処理が次の行にまたがっていることを表すため半角スペースの後にアンダーバー( _ )を記述してください。

Sub プロシージャ名()
    Range("A1").Value _
        = 10
End Sub

この場合は次のように書いたものと同等と見なされます。

Sub プロシージャ名()
    Range("A1").Value = 10
End Sub

改行する場合の注意点

アンダーバーを使うことで長いコードの途中で改行をすることができますが、値やプロパティ名などの途中で改行することはできません。

例えば次のようなコードを記述する場合で考えてみます。

Sub プロシージャ名()
    Range("A1").Value = 10
End Sub

Value プロパティの途中で次のように改行するとエラーとなります。

Sub プロシージャ名()
    Range("A1").Va _
        lue = 10
End Sub

改行する場合の注意点(1)

改行する場合はスペースの前後やドット( . )の前後などで行うようにしてください。

またアンダーバー( _ )を使って改行した場合、アンダーバーの右側には何も記述できません。コメントも記述できない点に注意してください。

例えば次のように改行のためのアンダーバーの右にコメントを記述してみるとエラーとなります。

Sub プロシージャ名()
    Range("A1").Value _ ' 改行しています
        = 10
End Sub

改行する場合の注意点(2)

-- --

VBA でコードを途中で改行する方法について解説しました。

( Written by Tatsuo Ikura )

広告