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でコマンドを打つ時の改行コードもこちらになります。
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環境なので当然ながら改行されましたね。
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で改行がされない場合の原因と対処法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す