【2026年7月最新】VBAの改行コード完全ガイド|vbCrLf・vbLf・Chr(10)の使い分け・MsgBox改行・セル内改行・Split分割・InStr検索まで実践コード集
この記事の内容
「VBAのMsgBoxで文章を複数行に分けたい」「セルにAlt+Enterで改行を入れるVBAを書きたい」「取り込んだデータの改行を一括削除したい」——VBAの改行コードは用途によって使う定数が異なります。
VBAの改行コードにはvbCrLf・vbLf・vbCrの3種類があり、場面によって使い分けが必要です。この記事ではMsgBox改行・セル内改行・改行削除(Replace)・改行で分割(Split)・改行検索(InStr)まで全パターンを実践コードで解説します。
01 NEWLINE TYPES VBAの改行コードとは(vbCrLf・vbLf・vbCrの違い) CR・LF・CRLFの意味とOS別の標準改行コードを整理する
コンピュータで「改行」を表現するには、目に見えない特殊文字(改行コード)を使います。VBAでは3種類の改行コード定数が用意されています。
📚 用語解説
CR(キャリッジリターン)とLF(ラインフィード):テキストファイルで改行を表す2種類の制御文字。CR(Carriage Return・Chr(13))は昔のタイプライターで「先頭位置に戻る」動作から、LF(Line Feed・Chr(10))は「紙を1行分送る」動作から来た名前です。Windowsは改行に「CR+LF」の2文字を使い、Unixは「LF」のみ、旧MacOSは「CR」のみでした。VBAではvbCrLf=CR+LF、vbLf=LF、vbCr=CRを表す定数として使います。
| 定数 | Chr値 | OS標準 | 使いどころ(VBA) |
|---|---|---|---|
| vbCrLf | Chr(13)+Chr(10) | Windows | MsgBox・テキストファイル出力・変数内の行区切り |
| vbLf | Chr(10) | Unix/Mac | Excelセル内改行(Alt+Enterに相当) |
| vbCr | Chr(13) | 旧MacOS | 現代ではほぼ使わない(旧システムデータの処理に稀に必要) |
| vbNewLine | 環境依存 | システムに依存 | OS問わず標準改行(通常vbCrLfと同じ) |
Excelのセルに改行を入れる場合はvbLf(Chr(10))、MsgBoxやテキストファイルにはvbCrLf(Chr(13)+Chr(10))を使います。セルにvbCrLfを使うと改行が2重になったり、セルの表示が崩れることがあります。「MsgBox = vbCrLf、セル = vbLf」と覚えておいてください。
02 MSGBOX NEWLINE MsgBoxで改行する方法 vbCrLfを使ってMsgBoxのメッセージを複数行に分割するコード
MsgBoxで複数行のメッセージを表示したい場合は、文字列と文字列の間にvbCrLfを挿入します。
03 CELL NEWLINE セル内に改行を入れる方法(vbLf・Alt+Enter相当) セルの折り返し表示とvbLfの組み合わせでAlt+Enter改行を実現
ExcelでAlt+Enterを押してセル内改行するのと同じことをVBAで実現するには、vbLf(Chr(10))を使います。セルの「折り返して全体を表示する」設定も合わせて設定すると改行が見えるようになります。
📚 用語解説
WrapTextプロパティ(VBA):Excelセルで「折り返して全体を表示する」設定を制御するVBAプロパティ。「Cells(1,1).WrapText = True」でその設定をONにします。vbLfでセル内改行を挿入しても、WrapTextがFalseだと折り返しが表示されません。セル内に複数行のテキストを表示したい場合は、vbLfの挿入とWrapText = Trueをセットで設定してください。
04 CODE LINE BREAK コード行を途中で折り返す方法(アンダースコア) 長いVBAコードを複数行に分割して読みやすくする方法
VBAコードが長くなった場合、行末に半角スペース + アンダースコア( _)を付けると次の行に続けて書けます。これは実際のプログラムの動作とは無関係で、コードの読みやすさのための機能です。
📚 用語解説
行継続文字(VBA):VBAコードを複数の物理的な行に分割するための記号。「半角スペース + _(アンダースコア)」を行末に付けると、次の行に続けて書けます。VBAエディタ(VBE)上では複数行に見えますが、実行時は1行のコードとして処理されます。引数が多いAPI呼び出しや長い文字列の結合式を見やすく整形する際によく使われます。
「 _」(半角スペース+アンダースコア)を使う際、スペースを忘れると「_」が識別子の一部として解釈されてエラーになります。また、コメント文('から始まる行)の後には行継続文字を使えません。「Cells(1,1).Value = "test" 'コメント _」のように書くとエラーになります。行継続文字を使う行にはコメントを書かないようにしてください。
05 DELETE NEWLINE 改行コードを削除する方法(Replace関数) 全種類の改行コードを一括削除するフル対応コード
外部データを取り込んだ際に、改行コードが混在してデータ処理の妨げになることがあります。Replace関数を使って全種類の改行コードを一括削除できます。
vbCrLf(CR+LF)はvbCrとvbLfが組み合わさった2文字です。Replace順序を誤って先にvbCrやvbLfを削除すると、vbCrLfのうちどちらか1文字だけが残ってしまいます。処理順は「①vbCrLf→②vbCr→③vbLf」の順番で必ず実行してください。
06 SPLIT NEWLINE 改行コードで文字列を分割する(Split関数) 複数行の文字列を1行ずつ配列に分割して処理するコード
複数行のテキストを1行ずつ処理したい場合、Split関数に改行コードを区切り文字として渡すことで文字列を配列に分割できます。
📚 用語解説
Split関数(VBA):VBAで文字列を指定した区切り文字で分割し、配列(String型の動的配列)に格納する関数。「Split("A,B,C", ",")」は「Array("A","B","C")」と同じ結果を返します。改行コードを区切り文字にする「Split(str, vbLf)」で、複数行テキストを1行ずつの配列に変換できます。For文と組み合わせて各行を処理する場合に使います。
07 INSTR NEWLINE 改行コードが含まれているか検索・判定する(InStr) InStrで改行の有無を判定して処理を分岐するコード
「セルの値に改行が含まれているかどうか」を事前に確認してから処理を分岐したい場合は、InStr関数を使います。
改行が含まれるか判定
Split→1行ずつ処理
そのまま処理
セル・変数・MsgBox等
08 CLAUDE CODE NEWLINE Claude CodeでVBA改行コード処理を自動生成する 「改行を削除して・MsgBoxで複数行表示して」を日本語で指示
VBAの改行コードは「vbCrLf・vbLf・vbCr・Chr(10)」など表記が多く、どれを使えばいいか迷いやすいです。Claude Codeに用途を日本語で伝えるだけで、場面に適した改行コードを使った正しいコードを自動生成できます。
Excel・VBAの文字列処理・データ整形をClaude Code×AI鬼管理で自動化
改行コード処理・文字列置換・データクリーニングなど、Excelのデータ整形業務をClaude Codeを活用したVBAマクロで自動化する方法を無料でご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. VBAのvbCrLfとvbLfはどう使い分けますか?
A. MsgBoxやテキストファイルへの書き出しにはvbCrLf(Windows標準の改行CR+LF)、Excelセル内のAlt+Enterに相当する改行にはvbLf(LF)を使います。セルにvbCrLfを使うと改行文字が2つ入り、表示が崩れることがあります。「MsgBox = vbCrLf、セル内 = vbLf」と覚えてください。
Q. VBAでMsgBoxの文章を複数行に表示するには?
A. 文字列と文字列の間にvbCrLfを挟みます。「MsgBox "1行目" & vbCrLf & "2行目" & vbCrLf & "3行目"」で3行のメッセージが表示されます。長いメッセージは変数に格納してからMsgBoxに渡すと読みやすいコードになります。空白行を入れる場合はvbCrLfを2つ連続で使います。
Q. VBAでセルにAlt+Enterで入れた改行を削除するには?
A. Excelのセル内改行はvbLf(Chr(10))で表現されます。「cell.Value = Replace(CStr(cell.Value), vbLf, "")」でセル内の改行を削除できます。外部データからコピーした場合はvbCrLfやvbCrも混在することがあるため、「Replace(Replace(Replace(str, vbCrLf, ""), vbCr, ""), vbLf, "")」の3段重ねで全種類を削除するのが安全です。
Q. VBAのSplit関数で改行ごとに文字列を分割するには?
A. 「Dim lines() As String: lines = Split(str, vbLf)」でセル内改行で分割できます。テキストファイルやMsgBox由来のデータはvbCrLfが改行なので「lines = Split(str, vbCrLf)」を使います。分割後は「For i = 0 To UBound(lines)」でループして各行を処理します。UBound(lines)+1が行数になります。
Q. VBAでコードが長くなったときに改行する方法は?
A. VBAコードを複数行に分割するには、行末に「半角スペース + _(アンダースコア)」を付けます。「MsgBox "長いメッセージ" & vbCrLf _」のように書き、次の行に続きを書けます。スペースを忘れるとエラーになります。コメント('から始まる部分)の後には行継続文字は使えないので注意してください。
📚 用語解説
Chr関数(VBA):VBAで文字コード(ASCII/Shift-JIS)を文字に変換する関数。「Chr(10)」はLF(ラインフィード・改行)、「Chr(13)」はCR(キャリッジリターン)、「Chr(9)」はタブ文字を返します。「vbLf」は「Chr(10)」の省略形であり、「vbCrLf」は「Chr(13) & Chr(10)」と同じです。定数名(vbLf等)を使う方がコードの可読性が高いため、実務ではChr()より定数を使うことが推奨されます。
改行コードの実践パターン集:よく使う処理をコピーして使う
実務でよく使うVBA改行コードの処理パターンを集めました。
VBAの改行コードは「vbCrLf(MsgBox用)」と「vbLf(セル内用)」の2つを軸に、用途に合わせて使い分けることが重要です。外部データのクリーニングでは全種類の改行コードに対応したRemoveAllNewlines・NormalizeNewlines関数を一度作っておき、プロジェクト内で再利用するのがベストプラクティスです。Split・InStrと組み合わせることで、改行コードに関するあらゆる処理に対応できます。Claude Codeに「こういう改行処理をしたい」と日本語で伝えれば、適切な改行コードを使った完全なコードを即座に生成できます。
改行コード別の用途・注意点まとめ:迷ったときの判断基準
VBAで改行コードを使うとき「どれを使えばいいか迷う」というのは初心者だけでなく、VBAに慣れた人でも陥りやすい問題です。ここでは用途別に整理した判断基準を示します。
| 用途 | 使う定数 | Chr()表記 | 注意点 |
|---|---|---|---|
| MsgBoxで改行 | vbCrLf | Chr(13) & Chr(10) | Windowsの標準改行。MsgBoxはこれしか受け付けない |
| セル内改行(Alt+Enter) | vbLf | Chr(10) | WrapText=Trueを忘れずに設定する |
| テキストファイル書き出し | vbCrLf | Chr(13) & Chr(10) | メモ帳等で開くときはCrLfが安全 |
| Webシステムからの取得データ | vbLf | Chr(10) | Linux/Mac由来データはLFのみのことが多い |
| Macからのデータ(旧形式) | vbCr | Chr(13) | 旧Mac OS9以前の形式。現在はほぼ使われない |
| VBAコードの行継続 | _ (半角スペース+アンダースコア) | — | 文字列内では使えない。コードの見た目の整理用 |
外部システムから取り込んだデータには複数種類の改行コードが混在していることが多く、それが原因でSplit処理が正しく動かないケースが頻発します。そのため実務では「データ取込直後に必ず改行コードを正規化する」というルールを設けることが重要です。NormalizeNewlines関数を汎用ライブラリとして用意しておき、全てのデータ処理の冒頭で呼び出すようにしておけば、改行コード起因のバグをほぼゼロにできます。Claude Codeを使えばこうした汎用ユーティリティ関数も「改行コードを正規化するVBA汎用関数を作って」と指示するだけで即座に生成してくれるため、ゼロから考える必要はありません。
また、VBAの改行コード処理でもう一つよく起きるミスが「vbCrLfで一度ReplaceしてもvbLfが残る」というパターンです。これはReplace(str, vbCrLf, "")を実行しても、その後にReplace(str, vbLf, "")を実行しないとLFだけが残ってしまうためです。改行コードの削除は必ず「vbCrLf → vbCr → vbLf」の順番で処理するか、NormalizeNewlines関数を使って一括処理するのがベストプラクティスです。
Claude Codeで改行コード処理を自動化する:具体的な活用法
VBAの改行コード処理はルールさえ理解すれば難しくありませんが、処理パターンが多く「今回はどのコードを使うべきか」を毎回調べるのは時間の無駄です。Claude Codeを活用すると、日本語で要件を伝えるだけで適切な改行コードを選択した完全なVBAコードを即座に生成できます。
たとえば「Webシステムからコピーしたテキストをエクセルのセルに貼り付けたとき、改行が正しく表示されない。VBAで修正したい」とClaude Codeに伝えると、vbLfを使ったセル内改行の設定コードを自動生成してくれます。「CSVファイルを読み込むとき改行コードの処理で文字化けする」と伝えれば、vbCrLf・vbLf・vbCrの全パターンに対応したNormalizeNewlines関数を生成します。
改行コードの問題はExcelユーザーが日常的に直面する課題です。異なるOS・システム間でデータを受け渡すたびに起きるこの問題を、Claude Codeを使って一度汎用関数として解決しておくと、以後同じ問題が起きることはありません。VBAの改行コード処理をマスターし、Claude Codeと組み合わせることで、データ処理の品質と効率を大幅に向上させることができます。
VBA改行コードを正しく使いこなすことで、Excelでのデータ処理・MsgBox表示・ファイル出力の品質が格段に向上します。vbCrLf(MsgBox用)とvbLf(セル内用)の使い分けを基本とし、外部データのクリーニングにはvbCrLf・vbCr・vbLfの全種類に対応したNormalizeNewlines関数を用意しておくことが重要です。Split関数との組み合わせによる行ごとの処理、InStr関数による改行コード検索、Replace関数による削除・変換など、今回紹介したパターンをベースに応用してください。不明な点はClaude Codeに質問すれば、要件に合った最適なVBAコードをすぐに提案してもらえます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




