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) |
プラットフォーム固有の改行文字。現在のプラットフォームに対応する文字が使用されます。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でコマンドを打つ時の改行コードもこちらになります。
vbNewLineはVBA独自の定数で、CRLFとCRを環境に応じて自動変換してくれます。ただし、Macは古い方のCRとなるので、MacOS9以降ではうまく改行されない可能性があります…
VBAで改行コードを含む文字列か判定するイメージ
VBAで改行コードを含む文字列か判定するイメージについて説明をします。
以下のように様々な改行コード付き文字列をセルに代入します。
改行判定をしたいセルを選択し、改行判定VBAを実行します。
メッセージボックスでどのような改行コードがあるか結果を表示させます。
改行コードの指定方法はChr関数を使う方法と、改行の定数を使う方法の2種類となります。
Chr関数版と定数版のチェッカーで判定していきます。
VBAで改行コードを含む文字列か判定する方法
VBAで改行コードを含む文字列か判定する方法について説明をします。
Chr関数で改行コードを判定する
Chr関数の説明
Chr関数を使用して改行をしていきます。Chr関数の詳細は以下の通りです。
関数名 | Chr() |
---|---|
機能 | 指定した文字コードと関連付けられている文字を返します。 |
書式 | Chr(charcode) |
引数 | charcodeを半角文字は0 から255、全角文字は-32768 ~ 65536まで指定します。改行コードは10と13です。 |
サンプルデータを準備する
サンプルではLFの”Chr(10)”、 CRの”Chr(13)” 、CRLFの “Chr(13) + Chr(10) ” を以下のVBAで代入していきましょう。
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) & "お"
Range("C2").Value = "あ" & Chr(13) & "い" & Chr(13) & "う" & Chr(13) & "え" & Chr(13) & "お"
End Sub
最後の列はAlt+Enterで手入力をしていきます。
Chr関数で改行コードを判定するVBA
Chr関数で改行コードを判定する方法について説明をします。
チェック用VBA
サンプルコードは以下の通りです。
Sub 改行判定_Chr関数版()
Dim strResult As String
Dim objTemp As Object
'対象セルを指定します。
Set objTemp = Selection
strResult = objTemp.Address & "の改行コード判定結果は以下の通りです。" & vbCrLf & vbCrLf
strResult = strResult & "Chr(10):" & InStr(objTemp.Value, Chr(10)) & vbCrLf
strResult = strResult & "Chr(13)+Chr(10): " & InStr(objTemp.Value, Chr(13) + Chr(10)) & vbCrLf
strResult = strResult & "Chr(13):" & InStr(objTemp.Value, Chr(13)) & vbCrLf
'判定結果を表示させます。
MsgBox strResult
Debug.Print strResult
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
まずはA2セルを選択し、チェッカーを実行します。
2文字目がChr(10)の改行コードであることがわかりますね。
B2はChr(13) + Chr(10)となりますので、Chr(13) や Chr(10)も有りますね。
C2はChr(13) (CR)ですので、9より前のMacOS用改行コードとなり、セル内では改行されませんが、チェッカーを実行すると、Chr(13) が有りとして反応しますね。
D2のAlt+EnterはChr(10)として反応していますね。
改行定数で改行コードを判定する
サンプルデータを準備する
サンプルではA列をLF、B列をCRLF、C列をCR、D列をvbNewLineとし、以下のVBAで代入していきましょう。
Sub 改行のテスト2()
Range("A2").Value = "あ" & vbLf & "い" & vbLf & "う" & vbLf & "え" & vbLf & "お"
Range("B2").Value = "あ" & vbCrLf & "い" & vbCrLf & "う" & vbCrLf & "え" & vbCrLf & "お"
Range("C2").Value = "あ" & vbCr & "い" & vbCr & "う" & vbCr & "え" & vbCr & "お"
Range("D2").Value = "あ" & vbNewLine & "い" & vbNewLine & "う" & vbNewLine & "え" & vbNewLine & "お"
End Sub
最後の列はAlt+Enterで手入力をしていきます。
改行定数で改行コードを判定するVBA
改行定数で改行コードを判定する方法について説明をします。
チェック用VBA
サンプルコードは以下の通りです。
Sub 改行判定_定数版()
Dim strResult As String
Dim objTemp As Object
'対象セルを指定します。
Set objTemp = Selection
strResult = objTemp.Address & "の改行コード判定結果は以下の通りです。" & vbCrLf & vbCrLf
strResult = strResult & "vbLf:" & InStr(objTemp.Value, vbLf) & vbCrLf
strResult = strResult & "vbCrLf: " & InStr(objTemp.Value, vbCrLf) & vbCrLf
strResult = strResult & "vbCr:" & InStr(objTemp.Value, vbCr) & vbCrLf
strResult = strResult & "vbNewLine:" & InStr(objTemp.Value, vbNewLine) & vbCrLf
'判定結果を表示させます。
MsgBox strResult
Debug.Print strResult
End Sub
VBAを実行する
VBAを実行してみましょう。
まずはA2セルを選択し、チェッカーを実行します。
2文字目がvbLfの改行コードであることがわかりますね。
B2はvbCrLf(Chr(13) + Chr(10))となりますので、vbCr(Chr(13)) やvbLf( Chr(10))も有りますね。
またvbNewLineも反応をしています。
C2はvbCrですので、9より前のMacOS用改行コードとなり、セル内では改行されませんが、
チェッカーを実行すると、vbCr が有りとして反応しますね。
D2はvbNewLineですが、vbCrLfと同じ結果ですね。
E2のAlt+EnterはvbLfとして反応していますね。
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで改行コードを含む文字列か判定できるコードの種類
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す