VBAのMsgBox内で改行する方法!改行がされない場合の原因と対処法も!

VBAのMsgBox内で改行したいときはないでしょうか。

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

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

ですよね。

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

・VBAのMsgBox内で改行する方法
・VBAのMsgBox内で改行できるコードの種類
・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)

プラットフォーム固有の改行文字。現在のプラットフォームに対応する文字が使用されます。vbNewLineChr(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以降ではうまく改行されない可能性があります…

タカヒロ
タカヒロ
Windows環境のMsgBox内ではコードすべて改行ができます。WindowsやMac環境で動かす前提であればCRLFがよいでしょう。

VBAのMsgBox内で改行する方法

VBAのMsgBox内で改行する方法について説明をします。

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

Chr関数の説明

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

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

Chr関数で改行するVBA

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

サンプルではLFの”Chr(10)”、 CRの”Chr(13)” 、CRLFの “Chr(13) + Chr(10) ” をまとめてMsgBox内へ表示させます。

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

Sub MsgBox内の改行テスト1()
    MsgBox "Chr(10)" & Chr(10) & "Chr(13)" & Chr(13) & "Chr(13) + Chr(10) " & Chr(13) + Chr(10) & "Chr関数改行はすべてOK"
End Sub

VBAの実装

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

VBAを実行する

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

すべて改行されましたね。

タカヒロ
タカヒロ
前回の記事ではCR(Chr(13))はWindows環境のExcelのセル内では改行されませんでしたが、MsgBoxではしっかり改行されましたね。

 

定数を使用して改行する

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

サンプルでは”vbLf” 、”vbCrLf” 、”vbCr” 、”vbNewLine” の定数を指定しています。

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

Sub MsgBox内の改行テスト2()
    MsgBox "vbLf" & vbLf & "vbCrLf" & vbCrLf & "vbCr" & vbCr & "vbNewLine" & vbNewLine & "定数改行はすべてOK"
End Sub

VBAを実行する

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

すべての改行系定数で改行されましたね。

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

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

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

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

macOSのバージョン9以前に使用されている改行コードで、バージョン9以降のMacOSやLinuxなどではサポートされていません。

原因その1の対処法

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

原因その2:定数のスペルミス

原因その2は定数のスペルミスなどで規定でない定数を指定している場合となります。

たとえば、CrLfの改行コードを指定す時、定数は”vbCrLf”ですが、”CrLf ”としてしまう場合などが考えられます。

原因その2の対処法

原因その2の対処法は、スペルミスを訂正しましょう。

VBAの実装手順

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

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

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

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

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

こちらで完了です。

VBAを実行する

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

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

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

さいごに

いかがでしょうか。

今回は、

・VBAのMsgBox内で改行する方法
・VBAのMsgBox内で改行できるコードの種類
・VBAで改行がされない場合の原因と対処法

についてまとめました。

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



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

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





タカヒロ

ドラッカーの名言「強みを生かす」の自分の「強み」をツールでサクッと診断してみました。

結果は意外でした…

ストレングスファインダー診断結果公開!NGな点もまとめ!




コメントを残す

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