VBAで改行コードを含む文字列か判定する方法!

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)

プラットフォーム固有の改行文字。現在のプラットフォームに対応する文字が使用されます。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で改行コードを含む文字列か判定する方法
・VBAで改行コードを含む文字列か判定できるコードの種類

についてまとめました。

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



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

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



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

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