MENU

【VBA】改行完全ガイド|vbLf・vbCrLf・vbNewLineを使い分ける

VBAで文字列操作、メッセージ表示などをする際、「文字列が長いから改行して見た目を整えたい」と思ったことがある方は多いはず。実は、改行するためのコード表現は複数あります。

この記事では、全パターンの改行方法と実践テクニックをまとめました。これだけ読めば、VBAにおける改行について迷うことはなくなるでしょう。

目次

改行コードの種類と用途

VBAでは主に4種類の改行コードが使われます。

改行コード主な用途
vbLfセル内改行
vbCr古いMac環境
vbCrLfMsgBox・テキストファイル
vbNewLineWindowsや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

上記コードでは、改行コードの vbLfReplace 関数で半角スペースに置換することによって改行を削除しています。

改行が含まれているかを判定する

Sub CheckLineBreak()
    If InStr(Range("A1").Value, vbLf) > 0 Then
        MsgBox "改行があります"
    End If
End Sub

このコードでは、 Instr 関数を使うことでセル内に改行が含まれているかどうかを判定しています。

まとめ

  • セル内改行vbLf(折り返し表示を必ずオンに)
  • メッセージボックス・テキストファイルvbCrLf または vbNewLine
  • コードの可読性向上 → アンダースコア _ でのコード自体を改行
  • 応用操作 → Split / Replace / InStr で柔軟に対応可能

改行の基本をしっかり理解し、場面に応じて適切に使い分けましょう!

この記事を書いた人

うつ病により二度の休職を経験。
現在は自動車メーカー勤務で、開発業務改善に従事。
自身の経験を基にしたメンタル改善のための情報や、仕事を楽にするためのVBAのノウハウ発信をしています。

目次