大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、改行コードを使う方法をご紹介します。改行コードには、3種類あって、vbCrLf、vbLf、vbCrです。エクセルで使われる改行コードが、vbLfなので、VBAで改行コードを使う際は、vbLfを使うといいです。具体的なVAコードを使いながら、解説していきます。

はじめに

この記事では、VBAで改行コードを使う方法について、ご紹介します。

改行コードは、3種類あって、「vbCrLf」と「vbLf」、「vbCr」です。

エクセルやVBAで改行を使うのであれば、「vbLf」を使います。

Windowsのメモ帳などのテキストファイルでは、改行コードは「vbCrLf」となります。

では、具体的なVBAコードを使って、解説していきます。

この記事で紹介すること

  • VBAで改行コードを使う方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAで使う改行コードは3種類

VBAで使う改行コードは、3種類あります。

改行コードは、

  • vbCrLf(メモ帳で使う)
  • vbLf(VBAやエクセルで使う)
  • vbCr(使う場面はあまりない)

となります。

ややこしいですよね。

ただ、とりあえず、VBAで改行コードを使うのであれば、「vbLf」を使えばいいです。

セル内で改行したときの改行コードは、「vbLf」となりますし、メッセージボックスでも、「vbLf」で改行することができます。

メモ帳などで改行する場合の、改行コードは、「vbCrLf」となります。

それぞれの改行コードを使って、セル内の改行と、メッセージボックスでの改行をしてみます。

vbCrLfで改行

VBAで、「vbCrLf」を使って、セルに値を入力してみます。

vbCrLfで改行(セル)

Sub TEST1()
    
    'vbCrLfで改行
    a = "aaa" & vbCrLf & "bbb"
    
    'セルに入力
    ActiveSheet.Cells(1, 1) = a
    
End Sub

実行します。

vbCrLfで改行した結果

セル内で改行することができました。

vbCrLfで改行(メッセージボックス)

メッセージボックスでも改行してみます。

Sub TEST2()
    
    'vbCrLfで改行
    a = "aaa" & vbCrLf & "bbb"
    
    MsgBox a
    
End Sub

実行します。

vbCrLfでメッセージボックス内を改行した結果

メッセージボックスで改行できました。

vbLfで改行

VBAで、「vbLf」を使って、セルに値を入力してみます。

vbLfで改行(セル)

Sub TEST3()
    
    'vbLfで改行
    a = "aaa" & vbLf & "bbb"
    
    'セルに入力
    ActiveSheet.Cells(1, 1) = a
    
End Sub

実行します。

vbLfで改行した結果

セル内で改行することができました。

vbLfで改行(メッセージボックス)

メッセージボックスでも改行してみます。

Sub TEST4()
    
    'vbLfで改行
    a = "aaa" & vbLf & "bbb"
    
    MsgBox a
    
End Sub

実行します。

vbLfでメッセージボックス内を改行した結果

メッセージボックスで改行できました。

vbCrで改行

VBAで、「vbCr」を使って、セルに値を入力してみます。

vbCrで改行(セル)

Sub TEST5()
    
    'vbCrで改行
    a = "aaa" & vbCr & "bbb"
    
    'セルに入力
    ActiveSheet.Cells(1, 1) = a
    
End Sub

実行します。

vbCrで改行した結果

「vbCr」では、セル内の改行はできません。

vbCrで改行(メッセージボックス)

メッセージボックスで改行してみます。

Sub TEST6()
    
    'vbCrで改行
    a = "aaa" & vbCr & "bbb"
    
    MsgBox a
    
End Sub

実行します。

vbCrでメッセージボックス内を改行した結果

メッセージボックスでは、改行できました。

vbCr+vbLfでvbCrLfとなる

「vbCr」と「vbLf」を組み合わせると「vbCrLf」となります。

vbCrとvbLfで改行(セル)

「vbCr」と「vbLf」を組み合わせてセル内の改行をしてみます。

Sub TEST7()
    
    'vbCrとvbLfで改行
    a = "aaa" & vbCr & vbLf & "bbb"
    
    'セルに入力
    ActiveSheet.Cells(1, 1) = a
    
End Sub

実行してみます。

vbCrとvbLfを組み合わせてセル内の改行をした結果

セル内の改行ができました。

vbCrとvbLfで改行(メッセージボックス)

メッセージボックスでも改行してみます。

Sub TEST8()
    
    'vbCrとvbLfで改行
    a = "aaa" & vbCr & vbLf & "bbb"
    
    MsgBox a
    
End Sub

実行してみます。

vbCrとvbLfを組み合わせてメッセージボックス内を改行した結果

メッセージボックスでも同じように改行できました。

vbCrとvbLfを、vbCrLfと比較

「vbCr」と「vbLf」が「vbCrLf」と同じかを確認してみます。

Sub TEST9()
    
    a = vbCr & vbLf 'vbCrとvbLfを組み合わせる
    b = vbCrLf
    
    '一致するかを確認
    If a = b Then
        MsgBox "vbCr + vbLf と vbCrLf は一致します"
    End If
    
End Sub

確認してみます。

vbCrとvbLfがvbCrLfと同じかを確認した結果

vbCrとvbLfは、vbCrLfと同じとなりました。

セル内の改行コードを確認

セル内で改行したときの、改行コードを確認してみます。

セル内の改行はvbLf

セル内で改行をしたときの改行コードは「vbLf」となります。

もちろん、改行コードは表示されないので見えませんけれども、こんな感じで「vbLf」が入力されます。

セル内で改行はvbLf

セル内で改行したときの改行コード

赤文字で表示した「vbLf」のところです。

VBAで確認してみる

セル内で改行した場合の、改行コードが「vbLf」かを確認してみます。

Sub TEST10()
    
    'セルの値を取得
    a = ActiveSheet.Cells(1, 1)
    
    'vbLfが含まれているかを確認
    If InStr(a, vbLf) > 0 Then
        MsgBox "vbLfが含まれています"
    End If
    
    'vbCrが含まれているかを確認
    If InStr(a, vbCr) > 0 Then
        MsgBox "vbCrが含まれています"
    End If
    
    'vbCrLfが含まれているかを確認
    If InStr(a, vbCrLf) > 0 Then
        MsgBox "vbCrLfが含まれています"
    End If
    
End Sub

実行します。

セル内の改行はvbLf

セル内で改行した場合の改行コードが「vbLf」かを確認した結果

結果は、「vbLfが含まれています」となりました。

それ以外の、「vbCr」や「vbCrLf」は含まれていません。

なので、セル内の改行コードは、「vbLf」となります。

VBAで改行を使う場合はvbLfがいい

セル内で改行した場合は、「vbLf」が入力されますので、VBAで改行を扱う場合は、「vbLf」を使うといいです。

VBAで文字列を扱う場合や、メッセージボックス内で改行する場合ですね。

とりあえず、改行コードは、「vbLf」を使うという感じです。

テキストファイルの改行を確認

Windowsのメモ帳で改行をする場合の改行コードは、「vbCrLf」となります。

ここはちょっと注意です。

エクセルで改行を使うときは、基本的に「vbLf」ですけども、メモ帳などのテキストファイルでは「vbCrLf」が使われたりします。

テキストファイルの改行はvbCrLf

メモ帳で改行したデータを用意しました。

メモ帳で改行はvbCrLf

メモ帳で改行したデータを用意

下の方に「CRLF」と書かれています。

なので、メモ帳の改行を、VBAで扱う場合の改行コードは、「vbCrLf」となります。

VBAで確認してみる

メモ帳の値をエクセルに取り込んでみます。

Sub TEST11()
    
    'ファイルパスを設定
    Dim FilePath
    FilePath = ThisWorkbook.Path & "\TEST.txt"
    
    'テキストファイルの値を取得
    With CreateObject("ADODB.Stream")
        .Charset = "UTF-8"
        .Open
        .LoadFromFile FilePath 'ファイルパス
        buf = .ReadText '読み込むデータ
        .Close
    End With
    
    'セルに値を入力
    ActiveSheet.Cells(1, 1) = buf
    
End Sub

改行された値を取得できました。

メモ帳から値を取得

改行された値を取得した結果

メモ帳から取り込んだ値の改行コードは、「vbCrLf」となります。

改行コードを判定してみます。

Sub TEST12()
    
    'セルの値を取得
    a = ActiveSheet.Cells(1, 1)
    
    'vbLfが含まれているかを確認
    If InStr(a, vbLf) > 0 Then
        MsgBox "vbLfを含みます"
    End If
    
    'vbCrが含まれているかを確認
    If InStr(a, vbCr) > 0 Then
        MsgBox "vbCrを含みます"
    End If
    
    'vbCrLfが含まれているかを確認
    If InStr(a, vbCrLf) > 0 Then
        MsgBox "vbCrLfを含みます"
    End If
    
End Sub

実行します。

メモ帳の改行コードを判定

メモ帳から取り込んだ値の改行コードを判定した結果①
メモ帳から取り込んだ値の改行コードを判定した結果②
メモ帳から取り込んだ値の改行コードを判定した結果③

「vbLf」、「vbCr」、「vbCrLf」の全てが含まれていることになりました。

つまり、改行コードは、「vbCrLf」ということになります。

テキストファイルは改行コードに注意

テキストファイルを扱う際には、改行コードに注意です。

メモ帳の改行コードは、「vbCrLf」なので、改行コードが「vbLf」であると認識しているとちょっと不都合が生じます。

例えば、メモ帳の値を取得して、「Split」で「vbLf」毎に改行した場合です。

Sub TEST13()
    
    'ファイルパスを設定
    Dim FilePath
    FilePath = ThisWorkbook.Path & "\TEST.txt"
    
    'テキストファイルの値を取得
    With CreateObject("ADODB.Stream")
        .Charset = "UTF-8"
        .Open
        .LoadFromFile FilePath 'ファイルパス
        buf = .ReadText '読み込むデータ
        .Close
    End With
    
    'vbLfで配列を分割する
    a = Split(buf, vbLf) '←正しくは、vbCrLfで分割する
    
    'セルに値を入力
    ActiveSheet.Cells(1, 1) = a(0)
    ActiveSheet.Cells(2, 1) = a(1)
    
End Sub

メモ帳に改行した値を用意しました。

メモ帳に改行した値を入力

メモ帳に改行した値を用意

データを取得して、「vbLf」毎に値を取得してみます。

vbLfで分割してセルに入力

メモ帳の値を取得してvbLf毎に分けた値をセルに入力した結果

「vbLf」の改行毎に値をセルに入力できました。

正しく改行毎に値を取得できていそうですけども、「vbCr」の改行コードが残っちゃいます。

vbCrが残ってしまう

改行毎の値を取得に失敗してvbCrの改行コードが残った結果

改行コード「vbCr」が残っているかを判定してみます。

Sub TEST14()
    
    'vbCrが含まれているかを確認
    If InStr(ActiveSheet.Cells(1, 1), vbCr) > 0 Then
        MsgBox "vbCrが含まれています"
    End If
    
End Sub

実行してみます。

改行コードvbCrが残っているかを判定

改行コード「vbCr」が残っているかを判定した結果

結果は、「vbCrが含まれています」となりました。

これぐらいの値の取得であれば、不都合はありませんけども、複雑なVBAコードを作っていくと、この「vbCr」が原因で、うまくVBAが動かなくなったりします。

メモ帳などのテキストファイルを扱う場合は、改行コードは、「vbCrLf」です。

少し注意ですね。

おわりに

この記事では、VBAで改行コードを使う方法について、ご紹介しました。

改行コードは、3種類あって、「vbCrLf」と「vbLf」、「vbCr」です。

エクセルやVBAで改行を使うのであれば、「vbLf」だけを覚えておけばいいです。

Windowsのメモ帳では、改行コードが、「vbCrLf」となるので、改行毎で文字列を分割などをする際には、「vbCrLf」で分割しましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す