更新日:、 作成日:
VBA 文字列を改行する
はじめに
Excel VBA マクロで文字列 (String) を改行する方法を紹介します。
vbCrLf 定数が文字列を改行する改行コードです。
vbLf 定数がセル内で改行する改行コードです。
Code _ のように _ を入力して、VBA のコードを改行できます。
「Replace 関数」を使用して、改行を置換できます。
文字列を改行する (vbCrLf)
vbCrLf 定数が改行文字です。文字列に結合すると、そこで改行します。
Dim s As String
s = "一行目" & vbCrLf & "二行目"
Debug.Print(s)
' 一行目
' 二行目
s = s & vbCrLf & "三行目"
Debug.Print(s)
' 一行目
' 二行目
' 三行目
vbCrLf は vbCr と vbLf 定数を結合したものです。テキストファイルにも使われる Windows の一般的な改行コードが vbCrLf です。
セル内を改行する (vbLf)
vbLf 定数がセル内の改行文字です。セル内で Alt + Enter キーを入力したときの改行コードです。
そのため VBA からセルに改行した文字列を入力するには vbLf を使います。
Dim s As String
s = "一行目" & vbLf & "二行目"
Range("A1").Value = s
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 にはありません。