VBAのMsgBox内で改行したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAの改行コードがいろいろあってどれを使ってよいかわからない
・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以降ではうまく改行されない可能性があります…
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を実行してみましょう。
すべて改行されましたね。
定数を使用して改行する
定数指定で改行をする方法について説明をします。
サンプルでは”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で改行がされない場合の原因と対処法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す