文字を「次の行」に送るだけで、画面の見え方がグッと変わります。はじめてのVBAでも、改行はすぐに使えて効果がわかりやすいところ。ここから丁寧に、例題付きで説明します。
改行ってそもそも何?
- 基本イメージ: 文字列の途中で次の行に移すこと(Enterキーと同じイメージ)。
- VBAでの改行: 文字列同士をつなぐときに、改行コード(特別な文字)を入れる。
- よくある場面: セルの中で住所を「都道府県」と「市区町村」で分けたい、メッセージボックスで複数行を表示したい、など。
覚えるべき改行コードはこの4つ
- vbLf: セル内の改行でほぼ間違いない選択。Excelはセル内の改行にLFを使うことが多い。
- vbCrLf: Windows標準の「改行(改行+復帰)」で、MsgBoxやファイル出力などで安定。
- vbNewLine: 環境に合わせて適切な改行にしてくれる“おまかせ”タイプ。迷ったらこれ。
- Chr(10): vbLfと同じ意味(LF)。セル内改行で直接使いたいときに便利。
迷ったら「セルはvbLf」「MsgBoxはvbCrLfまたはvbNewLine」と覚えるとスムーズ。
まずは動かしてみる(例題つき)
セルの中で改行する(住所を2行に分ける)
Sub セルで改行_住所例()
Range("B2").Value = "東京都" & vbLf & "中央区"
End Sub
VB- ポイント:
& vbLf &が改行。実行後にB2が2行表示になります。 - 見えづらいとき: セルの折り返し表示をオンにする。
- セルを選択 → [ホーム] → [折り返して全体を表示] をオン
- またはコードで
Range("B2").WrapText = True
メッセージボックスで改行する(挨拶を2行表示)
Sub メッセージで改行_挨拶例()
MsgBox "こんにちは" & vbCrLf & "お元気ですか?"
End Sub
VB- ポイント:
vbCrLfを使うと、WindowsのMsgBoxで確実に改行されます。 - 代替:
vbNewLineにすると、環境差を気にせず使えます。
連続データを1セルで見やすくする(商品名を縦並び)
Sub セルで改行_リスト例()
Dim items As Variant
items = Array("りんご", "みかん", "ぶどう")
Range("C3").Value = items(0) & vbLf & items(1) & vbLf & items(2)
Range("C3").WrapText = True
End Sub
VB- ポイント: 配列の要素を
vbLfでつなぐと、1セルに縦並びの表示になります。
ありがちなつまずきと対処法
- 改行しているのに1行で見える:
- 原因: セルの折り返し表示がオフ、列幅が広すぎる。
- 対処:
Range("…").WrapText = Trueを設定。列幅を少し狭くすると改行が目で追いやすい。
- vbCrだけだと改行されないことがある:
- 理由: 単独CRは環境や表示先によって効かない場合がある。
- 対策: MsgBoxなら
vbCrLf、セルならvbLfを使う。
- 結合後の余分な改行が出る:
- 原因: 末尾にも改行を足してしまっている。
- 対策: 最後の要素には改行を付けないロジックにする(例:Join関数を使う)。
Sub 余分な改行なしで連結()
Dim items As Variant
items = Array("A", "B", "C")
Range("E2").Value = Join(items, vbLf) ' 末尾に余計な改行が付かない
Range("E2").WrapText = True
End Sub
VB練習問題
- 問題1: 住所の自動整形
- 「A2に都道府県」「B2に市区町村」があるとして、C2に「都道府県」と「市区町村」を改行で結合して表示し、折り返し表示をオンにするコードを書いてください。
- 問題2: 複数行の通知メッセージ
- 新規ユーザー登録の完了メッセージを、1行目「登録が完了しました」、2行目「ご利用ありがとうございます」、3行目「不明点はサポートまで」で表示してください(改行は環境差に強い指定を使う)。
- 問題3: 可変長リストの縦表示
- シートのA列に連続した品目名(A1〜A10)を読み込み、空セルを除外して1セル(D2)に改行区切りで縦並びに表示してください。最後に折り返し表示も設定。
まとめの指針
- セルに表示する改行: vbLf(またはChr(10))。WrapTextを忘れずに。
- MsgBoxやテキスト出力の改行: vbCrLf(またはvbNewLine)。
- 迷ったら: vbNewLineで“環境まかせ”にしてOK。
- キレイに整える: Join+vbLfで末尾の余計な改行を防ぐ。

