Excel VBA 逆引き集 | 改行入りセルの書き込み

Excel VBA
スポンサーリンク

改行入りセルの書き込み

セルの中で「1行目」「2行目」と改行して表示したいときは、改行コード(vbLf) を文字列に挟んで代入します。初心者がつまずきやすい「Alt+Enter」との違いや、複数行の書き込み方法を例題付きでまとめます。


基本:改行コードを使う

Sub WriteCellWithLineBreak()
    'A1セルに「1行目」と「2行目」を改行して書き込む
    Range("A1").Value = "1行目" & vbLf & "2行目"
End Sub
VB
  • ポイント:
    • vbLf は「改行コード」。セル内で Alt+Enter と同じ効果。
    • & で文字列を連結して改行を挟みます。
    • Value に代入するだけでOK。

複数行をまとめて書き込む(配列やループ)

Sub WriteMultipleLines()
    Dim text As String
    text = "商品A" & vbLf & "商品B" & vbLf & "商品C"
    Range("B2").Value = text
End Sub
VB
  • ポイント:
    • 複数行を一度に作るなら、文字列変数に vbLf を挟んでまとめる。
    • ループで作る場合も同じく vbLf を連結。

改行を見やすくする(折り返し設定)

Sub WriteWithWrapText()
    With Range("C3")
        .Value = "氏名" & vbLf & "住所" & vbLf & "電話番号"
        .WrapText = True 'セル内で折り返し表示
    End With
End Sub
VB
  • ポイント:
    • 改行コードを入れても、セルの「折り返し」がオフだと見えにくい。
    • WrapText = True を設定すると、セル内で改行が反映されます。

改行入りセルを一括で作る(表の見出しなど)

Sub WriteHeadersWithLineBreak()
    Range("D1").Value = "売上" & vbLf & "(千円)"
    Range("E1").Value = "利益" & vbLf & "(%)"
    Range("D1:E1").WrapText = True
    Range("D1:E1").HorizontalAlignment = xlCenter
End Sub
VB
  • ポイント:
    • 見出しに単位を入れるときに便利。
    • WrapText+中央揃えで見た目が整います。

例題で練習

例題1:セルに「住所」と「電話番号」を改行して書き込む

Sub Example_AddressPhone()
    Range("A2").Value = "住所: 東京都江東区" & vbLf & "電話: 03-1234-5678"
    Range("A2").WrapText = True
End Sub
VB

例題2:商品リストを1セルに縦並びで書き込む

Sub Example_ProductList()
    Dim products As Variant, text As String, i As Long
    products = Array("りんご", "みかん", "バナナ", "ぶどう")
    For i = LBound(products) To UBound(products)
        text = text & products(i) & vbLf
    Next
    Range("B5").Value = Left(text, Len(text) - 1) '最後の改行を削除
    Range("B5").WrapText = True
End Sub
VB

例題3:見出しに「売上(円)」を改行して表示

Sub Example_Header()
    With Range("C1")
        .Value = "売上" & vbLf & "(円)"
        .WrapText = True
        .HorizontalAlignment = xlCenter
    End With
End Sub
VB

実務の落とし穴と対策

  • 改行が見えない: WrapText を忘れるとセル内で改行が反映されない。必ず併用。
  • コピー貼り付けで消える: 他ソフトに貼ると vbLf が改行として認識されない場合あり。提出用は TEXTJOIN などで整形。
  • 大量データ: ループで vbLf を連結すると遅い。Join 関数を使うと高速。 Range("A1").Value = Join(Array("行1", "行2", "行3"), vbLf)
タイトルとURLをコピーしました