VBAで改行するには?MsgBox・セル・コード記述で使える書き方ガイド

ようこそ♪ささぽんのExcel教室へ。
今回は VBAにおいて「改行を正しく使う方法」 をお届けします!
VBAでコードを書いていて、「改行したら赤くなった!?」「メッセージを2行で表示したいけどやり方がわからない…」といった経験はありませんか?
実は、VBAには「改行」の独自ルールがあるため、普通にEnterキーを押しただけでは思った通りに動かないこともあります。
この記事では、MsgBoxやセルの中で改行する方法と、コードを見やすく整えるための改行方法まで、初心者にもわかりやすく解説していきます!

この記事は以下のような方におすすめです!
・VBAでメッセージを改行して表示したい方
・改行したらエラーになる原因が知りたい方
・見やすいコードの書き方を学びたい方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
目次
1.MsgBox内で改行する方法
MsgBoxで文章を表示したとき、1行に長い文がずらっと並んで読みにくさを感じたことはありませんか?
実は、MsgBoxの中でも改行を入れるよう指定することが出来ます!
◼︎“vbCrLf”で改行を指定する
VBAでメッセージボックスの中に改行を入れたいときは、“vbCrLf”という「改行用のキーワード」を使います。
これを文字列の間に挟むことで、メッセージが次の行に表示されるようになります。
例えば:
MsgBox "行1" & vbCrLf & "行2"
このように書くことで「行1」を1行目に、「行2」を2行目に記載したメッセージボックスが表示されます。

間に書かれている“vbCrLf”が改行を示すコードです。
単語の間に“&”で繋いで”vbCrLf”を入れることで改行ができるので、基本の使い方として押さえておきましょう。
◼︎MsgBoxの表示例
では、vbCrLf を使うと実際にどう表示されるのか、例を見てみましょう。
まず、改行を使わない場合です:
MsgBox "こんにちは!今日はいい天気ですね。"

このままだと、メッセージが1行に長く並んでしまい、少し見づらいと感じる方もいらっしゃるかもしれません。
そこで、vbCrLf を使って改行を入れてみましょう:
MsgBox "こんにちは!" & vbCrLf & "今日はいい天気ですね。"

表示が2行に分かれて、一気に読みやすくなりました!
このように、改行を入れるだけで見せたい情報を整理して伝えることができるようになります。
実務では、以下のように処理が完了した旨とファイルの保存先パスを表示させる場合などに便利です:
MsgBox "処理が完了しました!" & vbCrLf & "保存先:C:\Users\〜"

◼︎よくあるミスと注意点
vbCrLfを単語の間に挟むことで簡単に改行できますが、ここでついやりがちなミスを2つご紹介します。
①vbCrLfをダブルクォーテーションで囲ってしまう
VBAに置いて、ダブルクォーテーションで囲まれた部分は「文字列」として扱われます。
そのため、vbCrLfを以下のように囲ってしまうと、それ自体も文字列として扱われてMsgBoxに表示されてしまうので注意が必要です。
MsgBox "こんにちは!" & "vbCrLf" & "今日はいい天気ですね。"

②“&”を付け忘れる
VBAでは、単語や指示を連結するときに必ず“&”で繋ぐというルールがあります。
そのため、以下のように書いてしまうとvbCrLfは改行の指示とは扱われず、また文字として表示されてしまいます。
MsgBox "こんにちは!vbCrLf今日はいい天気ですね。"

細かい部分ですが、書き方のルールをマスターしてMsgBox内の改行を使いこなせるようにしましょう!
2.セル内で改行する方法
メッセージボックスと同じように、セルの中でも文字を途中で改行したい場面はよくありますよね。
セル内での改行についても、VBAでの指定方法を確認していきましょう!
◼︎Range内で“vbCrLf”を使う
セルにテキストを入力する場合でも、vbCrLf を使えば1つのセル内で改行することができます。
基本の書き方は以下の通りです:
Range("A1").Value = "名前:" & vbCrLf & "ささぽん"

VBAを使うことで、毎回手で「Alt + Enter」を押さなくても、自動で改行されたセルを作成できるのがポイントです!
◼︎よくある使い方の例
セル内で改行を使うと、情報を見やすく整理できるので、実務でも様々な場面で活用できます。
例えば、表の備考欄で箇条書きを使いたい時には以下の通り書きましょう:
Range("C3").Value = "・手順確認済み" & vbCrLf & "・関係者連絡済み" & vbCrLf & "・完了報告待ち"

このように vbCrLf を間に入れることで、セル内で1行ずつ項目が並ぶようになります。
手順のメモや確認項目など、ちょっとしたチェックリストをセルに書きたいときに試してみてください!
3.コード内で改行する方法
VBAでのコードを書いているときにも、1行の記述が長くなって読みづらいと感じたことはありませんか?
そんなときは、コード自体を途中で改行して、見やすく整えることができます!
◼︎アンダースコア(_)で改行する
VBAでは、長いコードを途中で改行したいときに、アンダースコア(_)を使います。
例えば、条件が複数になってしまうIf文での改行例を見てみましょう:
If mathScore >= 80 And _
englishScore >= 80 Then
MsgBox "合格です!"
このコードであれば、「数学の点数が80点以上かつ英語の点数が80点以上で合格となる」という条件が、一目で見やすくなりますよね!
特に、複数の条件があるときや処理内容が複雑になる場面では、コードを読みやすくするために積極的にアンダースコアを活用してみましょう。
◼︎注意点:コード内で改行出来ない箇所
アンダースコア(_)を使えばVBAのコードを途中で改行できますが、どこでも自由に使えるわけではありません。
今から紹介するやってはいけない3つの改行例と、その理由を押さえておきましょう!
①単語の途中で改行する
Dim tota _
l As Long
このように変数名やキーワードの途中で改行することはできません。
VBAは total をひとつの単語として読み取るため、分割すると構文エラーになります。
②アンダースコアの後に何も記述がない
total = price + _
アンダースコアは「まだ文が続く」という印です。
そのため、アンダースコアを書いた次の行に何も処理が続いていない場合、未完成の構文と判断されてエラーになります。
③アンダースコアの後にコメントを書く
total = price + _ ' 消費税を加算
tax
普段はシングルクオーテーション(’)を使うことでコードの邪魔をせずにコメントを入れることが出来ますが、改行の際には注意が必要です。
アンダースコアを入れた行はその後に続きの構文を書く必要があるので、コメントは入れないようにしましょう。
◼︎注意点:アンダースコアを使う際のルール
アンダースコアで改行する際には、改行出来ない箇所以外にもいくつかルールがあります。
1つずつ確認していきましょう!
①アンダースコアの前に半角スペースが必要
アンダースコアで改行を指定するときは、その直前に半角スペースが必要です。
total = price +_
tax
このように“+”と“_”の間にスペースがないと、エラーが起きて実行できません。
必ず以下のようにスペースを入れて改行指示するようにしましょう。
total = price + _
tax
②改行は1回のみ
アンダースコアを入れることで、1つの文を2行に分けることができますが、3行以上に分けることは出来ません。
例えば:
total = price + _
tax + _
shipping
このような使い方はできないため、文をさらに分ける場合は、式や処理を分解して書くなどの工夫が必要です。
4.まとめ:VBAの各場面での改行方法
今回の記事では、VBAにおける「改行」の方法を、表示・セル・コードの3つの場面でご紹介しました。
それぞれの場面で書き方やルールが異なるので、パターンごとにルールを押さえておきましょう:
改行の種類 | 使い方例 | 注意点 |
MsgBoxの改行 | “こんにちは” & vbCrLf & “今日はいい天気ですね” | vbCrLf を文字列として ” で囲まない |
セル内の改行 | Range(“A1”).Value = “名前:” & vbCrLf & “ささぽん” | vbCrLf を文字列として ” で囲まない |
コードの改行 | If 条件 Then _ MsgBox “OK” | ・_ の前にスペースが必要 ・1文につき1回まで ・コメントとつなげない |
改行をするだけで、画面内の情報が整理されて一気に見やすくなります。
vbCrLfとアンダースコア、それぞれの使いどころをおさえて、実務で活用してみてください!
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!