VBAで文字列操作、メッセージ表示などをする際、「文字列が長いから改行して見た目を整えたい」と思ったことがある方は多いはず。実は、改行するためのコード表現は複数あります。
この記事では、全パターンの改行方法と実践テクニックをまとめました。これだけ読めば、VBAにおける改行について迷うことはなくなるでしょう。
改行コードの種類と用途
VBAでは主に4種類の改行コードが使われます。
改行コード | 主な用途 |
---|---|
vbLf | セル内改行 |
vbCr | 古いMac環境 |
vbCrLf | MsgBox・テキストファイル |
vbNewLine | WindowsやMac環境共用 |
改行コードは用途を間違えると、意図した動作をしないことがあります。例えば、セル内改行に vbCrLf
を使うと、一部環境で改行が正しく表示されないこともあります。
セル内改行 : Alt+Enter相当の処理
セル中で改行(Alt + Enter)する動作をVBAで再現するには、vbLf
を使います。
Sub InsertCellLineBreak()
Range("A1").Value = "東京都" & vbLf & "中央区"
Range("A1").WrapText = True ' 折り返し表示をオンに
End Sub
上記コードを実行することで、改行した文字列をセルに入力することができるようになります。

セル内改行の注意点
セル内で改行しても、セルの書式設定で「折り返して全体を表示する」がオフになっていると、改行が見えません。改行が見えない場合は、上記のコードに記載したように WrapText = True
を設定しましょう。
MsgBoxで改行:複数行メッセージ
メッセージボックス内で改行する場合は、環境を問わず使える vbCrLf
が推奨されます。
Sub ShowMultiLineMsg()
MsgBox "処理が完了しました。" & vbCrLf & "保存を確認してください。"
End Sub
コード中の改行:可読性を向上させる
複雑なロジックのコードを記述する場合、If文の中でいくつもの条件式を組み合わせないと処理できないケースがあると思います。
その場合、1文のコードが長くなってしまいがちです。ネストさせることも有効ですが、「いくつも階層を持つコードにはしたくない」と考える方もいるでしょう。そんな時にはコード自体を改行しておくことが便利です。長いコードはアンダースコア _
を使って改行できます。
コード内改行の記述ルールとして、下記コードのように行末に「半角スペース+アンダースコア」を入れることが必要です。
Sub LongCode()
If Range("A1").Value >= 50 And _
Range("A1").Value < 60 Then
MsgBox "50以上60未満の値です"
End If
End Sub
応用例:文字列分割・改行削除・改行有無の判定
セル内改行で文字列を分割する
Sub SplitSentence()
Dim parts As Variant
parts = Split(ActiveCell.Value, vbLf)
Dim i As Long
For i = 0 To UBound(parts)
ActiveCell.Offset(i, 1).Value = parts(i)
Next i
End Sub
上記コードは、アクティブセル内の文字列を改行ごとに分割し、右隣のセルに転記しています。

改行を削除する
Sub RemoveLineBreak()
ActiveCell.Offset(1, 0) = Replace(ActiveCell, vbLf, " ")
End Sub
上記コードでは、改行コードの vbLf
を Replace
関数で半角スペースに置換することによって改行を削除しています。


改行が含まれているかを判定する
Sub CheckLineBreak()
If InStr(Range("A1").Value, vbLf) > 0 Then
MsgBox "改行があります"
End If
End Sub
このコードでは、 Instr
関数を使うことでセル内に改行が含まれているかどうかを判定しています。
まとめ
- セル内改行 →
vbLf
(折り返し表示を必ずオンに) - メッセージボックス・テキストファイル →
vbCrLf
またはvbNewLine
- コードの可読性向上 → アンダースコア
_
でのコード自体を改行 - 応用操作 → Split / Replace / InStr で柔軟に対応可能
改行の基本をしっかり理解し、場面に応じて適切に使い分けましょう!