改行入りセルの書き込み
セルの中で「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)
