VBA 文字列を改行する

はじめに

Excel VBA マクロで文字列 (String) を改行する方法を紹介します。

vbCrLf 定数が文字列を改行する改行コードです。

vbLf 定数がセル内で改行する改行コードです。

Code _ のように _ を入力して、VBA のコードを改行できます。

Replace 関数」を使用して、改行を置換できます。

その他の特殊文字については「特殊文字と制御文字」をご覧ください。
  • 目次
    • 文字列を改行する (vbCrLf)
    • セル内を改行する (vbLf)
    • 改行を置換する
    • コードを改行する

文字列を改行する (vbCrLf)

vbCrLf 定数が改行文字です。文字列に結合すると、そこで改行します。

Dim s As String
s = "一行目" & vbCrLf & "二行目"
Debug.Print(s)
' 一行目
' 二行目

s = s & vbCrLf & "三行目"
Debug.Print(s)
' 一行目
' 二行目
' 三行目

vbCrLf は vbCrvbLf 定数を結合したものです。テキストファイルにも使われる Windows の一般的な改行コードが vbCrLf です。

セル内を改行する (vbLf)

vbLf 定数がセル内の改行文字です。セル内で Alt + Enter キーを入力したときの改行コードです。

そのため VBA からセルに改行した文字列を入力するには vbLf を使います。

Dim s As String
s = "一行目" & vbLf & "二行目"
Range("A1").Value = s
1

vbCrLf で改行された文字列をコピーしてセル内に貼り付けると、自動で vbCrLf が vbLf に置換されます。

注意点

VBA から vbCrLf で改行された文字列をセルに入力すると、vbCrLf でセル内の改行がされます。このため、vbLf と vbCrLf が混在した状態になります。

セルの値をテキストファイルなどに出力するときは vbCrLf に統一する必要があります。そのためセルの改行コードを vbLf から vbCrLf に置換してから出力します。

Dim s As String
s = Range("A1").Value ' vbLf や vbCrLf で改行された値が入っている

Dim 置換後 As String
置換後 = Replace(s, vbLf, vbCrLf)        ' vbLf を vbCrLf に置換する
置換後 = Replace(s, vbCr & vbCr, vbCrLf) ' vbCrCr を vbCrLf に置換する

' 置換後の値をファイルなどへ出力する

1 回目の置換で vbCrLf → vbCrCrLf になります。

2 回目の置換で vbCrCrLf → vbCrLf にしています。

そもそも VBA から vbCrLf をセルに入力しなければ、置換する必要もありません。

改行を置換する

Replace 関数」を使用して、改行コードを置換できます。空文字 "" に置換して削除できます。

Dim s As String
s = "1" & vbCrLf & "2" & vbLf & "3"
s = Replace(s, vbCrLf, "") ' vbCrLf を削除する
s = Replace(s, vbLf, "")   ' vbLf を削除する
Debug.Print(s) ' 123
置換について詳しくは「文字列を置換する」をご覧ください。

コードを改行する

VBA のコードを改行したい位置で _ を入力します。ソースコードを改行できます。

Dim s As String

s = "一行目" _
    & vbCrLf _
    & "二行目"

s = "一行目" & vbCrLf & "二行目" ' これと同じコード

キーワード単位でコードを改行できます。

Sub _
実行()

Dim _
s _
As _
String

s _
= _
"改行"

End _
Sub

_ の後ろにはコメントも含めて何も入力できません。

横スクロールが必要なくらい長いコードのときは、改行すると見やすくなります。右端で折り返す機能は VBA にはありません。