VBAと日々のこぼれ話

  1. VBA

【VBA】メッセージを複数行で表示したい

MsgBox関数で複数行表示させたい

メッセージを複数行で出したい場合は、改行したい部分に改行コードを設定してあげれば良いです。
では、改行コードって何を設定するのか。

改行コード

改行コードを説明すると奥が深い + 私も全容を把握していないのですが、動作環境(OS)で違います。

日本のデスクトップPCのシェア率は圧倒的にWindowsなのでWindows前提でお話しすると、メッセージボックスで使う改行コードはキャリッジリターン(CR)とラインフィード(LF)の組み合わせと覚えてください。

 

メッセージボックスで使う改行コード
キャリッジリターン(CR)とラインフィード(LF)の組み合わせ
具体的には、
定数利用だと「vbCrLf」 or 「vbNewLine」
または
Chr関数利用で「Chr(13) & Chr(10)」

【スポンサーリンク】



改行コードの書き方は3パターン

書き方は3種類あります。
おまけで、サンプルコードの一番最後(vbLf)は間違いパターンを載せています。
※vbLfでも見た目も変わらず動くのは動きます。ですが、正しくはありません。

 

小話:定数「vbNewLine」

 

定数:vbNewLine
値:Chr(13)、Chr(10) または Chr(10)
内容:プラットフォームで指定した改行文字。現在のプラットフォームに適切ないずれかを使用します。

動作環境に合わせてVBAが改行コードを選んでくれる素敵な定数。
もうこれだけ覚えてればいいんじゃないのと思ってもそうは問屋が卸さない。
→小話2へ進む

 

小話2:Excelセル内の改行コード

 

上の説明で「メッセージボックスで使う改行コード」を強調しているかと言うとExcelセル内の改行コードはラインフィード(LF)だからです。

LFは、定数利用だと「vbLf」 または Chr関数利用で「Chr(10)」と表現します。

ちなみに「vbNewLine」は動作環境による値の選択なのでWindowsのExcelセル内に対する処理だと「Chr(13) & Chr(10)」が選択されてしまうんですよねー。。。なので、一律「vbNewLine」を使えば良いと言い切れないわけです。

 

常々、CRLFに寄せてほしいと願っているんだけど、今更もう変えられないんだろうな。
長期運用中の仕様変更って本当に大変だもんね。

【スポンサーリンク】



VBAの最近記事

  1. 【VBA】(VBAを始めたばかりの人が陥りがちな落とし穴) Excelシートの最終行を取得…

  2. 【VBA】QRコードを作成したい

  3. 【VBA】CSVを1行ずつ処理したい

  4. Excelシートの最終行を取得したい その1

  5. 【VBA】未だに苦手としていること

関連記事

【スポンサーリンク】




PAGE TOP