VBAで文字列を改行する方法!改行されない場合の対処法も!

VBAで文字列を改行したいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAで文字列を改行したいが方法がよくわからない
・VBAの改行コードがいろいろあってどれを使ってよいかわからない
・VBAで文字列を改行したがうまく改行されず困っている

ですよね。

今回はそんなお悩みを解決する

・VBAで文字列を改行する方法
・VBAでサポートされている改行コードの種類
・VBAで改行がされない場合の原因と対処法

についてまとめます!

VBAでサポートされている改行コードの種類

VBAの改行コードの種類は以下の通りです。

改行コード一覧

改行コード 説明 定数
CR macOSのバージョン9以前に使用されている改行コードです。 vbCr Chr(13)
LF macOS9以降で、Unix、Linuxにも利用されている改行コードです。 vbLf Chr(10)
CRLF WindowsOSやMS-DOS で使用している改行コードです。 vbCrLf Chr(13) + Chr(10)
プラットフォーム固有の改行文字。現在のプラットフォームに対応する文字が使用されます。 vbNewLine Chr(13) + Chr(10)、Macintosh の場合はChr(13)

参考:https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/miscellaneous-constants

CRはCarriage Returnといい、古くはApple IIというAppleが発表したPCの2代目から採用された改行コードとなります。由来の通りApple製PCのみのサポートであり、現在はあまり使われていません。

LFはLine Feedといい、 Unixに採用された改行コードとなります。Unixから派生したLinux、macOS、AmigaなどのOSにも採用されています。なお、Excelのセル内で改行するときに入るコードはこちらのLFとなります。

CRLFはCRとLFを合わせた改行コードとなり、WindowsOSに採用されています。MS-DOSでコマンドを打つ時の改行コードもこちらになります。

タカヒロ
タカヒロ
異なる環境間でやり取りするファイルの改行コードがLFかCRLFかで迷ったらCRLFを選択すればよいでしょう。

vbNewLineはVBA独自の定数で、CRLFとCRを環境に応じて自動変換してくれます。ただし、Macは古い方のCRとなるので、MacOS9以降ではうまく改行されない可能性があります…

VBAで文字列を改行する方法

VBAで文字列を改行する方法について説明をします。

Chr関数を使用して改行する

Chr関数の説明

Chr関数を使用して改行をしていきます。Chr関数の詳細は以下の通りです。

関数名 Chr()
機能 指定した文字コードと関連付けられている文字を返します。
書式 Chr(charcode)
引数 charcodeを半角文字は0 から255、全角文字は-32768 ~ 65536まで指定します。改行コードは10と13です。

Chr関数で改行するVBA

Chr関数で改行をする方法について説明をします。

サンプルでは「あいうえお」の文字列を1文字ごとに改行コードを挿入するようにしています。
A列をLFのChr(10)、B列はCRLFのChr(13) + Chr(10)で改行をしていきます。

サンプルコードは以下の通りです。

Sub 改行のテスト1()
    Range("A2").Value = "あ" & Chr(10) & "い" & Chr(10) & "う" & Chr(10) & "え" & Chr(10) & "お"
    Range("B2").Value = "あ" & Chr(13) + Chr(10) & "い" & Chr(13) + Chr(10) & "う" & Chr(13) + Chr(10) & "え" & Chr(13) + Chr(10) & "お"
End Sub

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

両コードとも改行されましたね。

CRの改行コードで改行されるか確認

追加でCRのChr(13)で改行されるか確認してみましょう。

サンプルコードは以下の通りです。

Sub 改行のテスト1a()
    Range("C2").Value = "あ" & Chr(13) & "い" & Chr(13) & "う" & Chr(13) & "え" & Chr(13) & "お"
End Sub

VBAを実行してみましょう。

CRなのでWindows環境では改行されませんね。

定数を使用して改行する

定数指定で改行をする方法について説明をします。

サンプルではA列をLF、B列をCRLF、C列をCRとします。

サンプルコードは以下の通りです。

Sub 改行のテスト2()
    Range("A2").Value = "あ" & vbLf & "い" & vbLf & "う" & vbLf & "え" & vbLf & "お"
    Range("B2").Value = "あ" & vbCrLf & "い" & vbCrLf & "う" & vbCrLf & "え" & vbCrLf & "お"
    Range("C2").Value = "あ" & vbCr & "い" & vbCr & "う" & vbCr & "え" & vbCr & "お"
End Sub

VBAを実行する

VBAを実行してみましょう。

CR以外改行されましたね。

vbNewLineで改行されるか確認

定数のvbNewLineで改行されるか確認してみましょう。

vbNewLineはChr(13) + Chr(10)、Macintosh の場合はChr(13)に変換される改行の定数となります。

サンプルコードは以下の通りです。

Sub 改行のテスト2a()
    Range("D2").Value = "あ" & vbNewLine & "い" & vbNewLine & "う" & vbNewLine & "え" & vbNewLine & "お"
End Sub

VBAを実行してみましょう。

Windows環境なので当然ながら改行されましたね。

タカヒロ
タカヒロ
検証環境がないのでわかりませんが、MacOS9以降は改行されないはずですので、導入の際は実機で検証をするようにしましょう。

VBAのMsgBox内で改行する方法

VBAのMsgBox内で改行するときどのコードを使っていいか悩みますよね。
Excelのセル内と同じく改行の検証結果をまとめましたので、ご参考ください。

<a href="https://extan.jp/?p=7953">VBAのMsgBox内で改行する方法!改行がされない場合の原因と対処法も!</a>

VBAで改行がされない場合の原因と対処法

VBAで改行がされない場合の原因と対処法について説明をします。

原因その1:CRの改行コードを指定している

原因その1はCRの改行コードをしている場合となります。

関数Chr(10)と定数vbCrが該当します。

macOSのバージョン9以前に使用されている改行コードで、Windowsではサポートされていないためとなります。

原因その1の対処法

原因その1の対処法は、CR以外の改行コードを使うようにしましょう。

原因その2:定数vbNewLineを指定している

原因その2は定数vbNewLineを指定している場合となります。

Windows環境では改行されますが、それ以外の環境では改行されない場合があります。

原因その2の対処法

原因その2の対処法は、定数vbNewLine以外の定数を使うようにしましょう。

VBAで改行コードが含まれるかチェックする方法

VBAで改行コードが含まれるかチェックする方法について説明をします。

以下のように様々な改行コード付き文字列をセルに代入します。

改行判定をしたいセルを選択し、改行判定VBAを実行します。

メッセージボックスでどのような改行コードがあるか結果を表示させます。

また定数版のチェッカーで判定していきます。

タカヒロ

タカヒロ
改行コードチェッカーのコードや検証結果は以下の記事にまとめていますので、ご参考ください。

<a href="https://extan.jp/?p=7328">VBAで改行コードを含む文字列か判定する方法!</a>

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAで文字列を改行する方法
・VBAでサポートされている改行コードの種類
・VBAで改行がされない場合の原因と対処法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です