Excel VBA | 文字列の結合

javascrpit VBA
スポンサーリンク

文字を「次の行」に送るだけで、画面の見え方がグッと変わります。はじめての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で末尾の余計な改行を防ぐ。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました