Excel VBA
Excel VBA uses specific line feed codes that have unique rules and applications. This page provides detailed information on the different types of line feed codes in Excel VBA and their respective uses. You will learn about practical examples and the differences between various line feed codes.
Excel VBAで使用される改行コードには特有の規則と用途があります。このページでは、Excel VBAにおける改行コードの種類と、それぞれの使い方について詳しく説明します。具体的な使用例や、異なる改行コードの違いについても学ぶことができます。
改行コード
改行コードには、4種類あって、「vbCrLf」、「vbLf」、「vbCr」、「vbNewLine」です。
Excelで使われる改行コードは、主に「vbLf」です。そのため、VBAで改行コードを使う際には、通常「vbLf」を使用します。しかし、他のシステムやアプリケーションと連携する場合は、適切な改行コードを選択することが重要です。
Windowsのメモ帳などのテキストファイルでは、改行コードは「vbCrLf」となります。
VBAで使う改行コードは4種類
VBAで使う改行コードは4種類あります。
改行コードは
Macintosh の場合は、Chr(13)
となります。
VBAで改行コードを使うのであれば「vbLf」を使えば問題ありません。
セル内で改行した時の改行コードは「vbLf」となりますし、メッセージボックスでも「vbLf」で改行することができます。
メモ帳などで改行する場合の改行コードは「vbCrLf」となります。
vbCrLf で改行
VBAで、「vbCrLf」を使って、セルに値を入力してみます。
VBA
Sub test1()
'変数a を宣言
Dim a As String
'vbCrLf で改行
a = "aaa" & vbCrLf & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
セル内で改行することができました。
続いて、メッセージボックスでも改行してみます。
VBA
Sub test2()
'変数a を宣言
Dim a As String
'vbCrLf で改行
a = "aaa" & vbCrLf & "bbb"
'メッセージボックスへ出力
MsgBox a
End Sub
メッセージボックスでも改行できました。
vbLf で改行
VBAで、「vbLf」を使って、セルに値を入力してみます。
VBA
Sub test3()
'変数a を宣言
Dim a As String
'vbLf で改行
a = "aaa" & vbLf & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
セル内で改行することができました。
続いて、メッセージボックスでも改行してみます。
VBA
Sub test4()
'変数a を宣言
Dim a As String
'vbLf で改行
a = "aaa" & vbLf & "bbb"
'メッセージボックスへ出力
MsgBox a
End Sub
メッセージボックスでも改行できました。
vbCr で改行
VBAで、「vbCr」を使って、セルに値を入力してみます。
VBA
Sub test5()
'変数a を宣言
Dim a As String
'vbCr で改行
a = "aaa" & vbCr & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
「vbCr」では、セル内の改行をすることができませんでした。
続いて、メッセージボックスでも改行してみます。
VBA
Sub test6()
'変数a を宣言
Dim a As String
'vbCr で改行
a = "aaa" & vbCr & "bbb"
'メッセージボックスへ出力
MsgBox a
End Sub
メッセージボックスでは改行できました。
vbCr + vbLf で vbCrLf となる
「vbCr」と「vbLf」を組み合わせると「vbCrLf」となります。
「vbCr」と「vbLf」を組み合わせて使ってセル内の改行をしてみます。
VBA
Sub test7()
'変数a を宣言
Dim a As String
'vbCr と vbLf で改行
a = "aaa" & vbCr & vbLf & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
セル内で改行することができました。
続いて、メッセージボックスでも改行してみます。
VBA
Sub test8()
'変数a を宣言
Dim a As String
'vbCr と vbLf で改行
a = "aaa" & vbCr & vbLf & "bbb"
'メッセージボックスへ出力
MsgBox a
End Sub
メッセージボックスでも改行できました。
「vbCr」と「vbLf」が「vbCrLf」と同じかを確認してみます。
VBA
Sub test9()
'変数a と 変数b を宣言
Dim a As String
Dim b As String
'変数a へ vbCr と vbLf を組み合わせて代入
a = vbCr & vbLf
'変数b へ vbCrLf を代入
b = vbCrLf
'変数a と 変数b が一致するか確認
If a = b Then
MsgBox "vbCr + vbLf と vbCrLf は一致します"
End If
End Sub
これにより vbCr と vbLf を組み合わせたものと、vbCrLfが同じものであることが確認できました。
セル内の改行コードを確認
セル内で改行したときの改行コードを確認してみます。
手入力をする際にセル内で改行したい場合は、「aaa」と入力後に「Alt + Enter」で改行し、続けて「bbb」と入力することでできます。
セル内の改行は vbLf
セル内で改行した時の改行コードは「vbLf」となります。
もちろん、改行コードは表示されないので見えませんから、VBAを使って確認してみます。
VBA
Sub test10()
Dim a As String
'セルの値を取得
a = ActiveSheet.Cells(1, 1).Value
'vbLfが含まれているかを確認
If InStr(a, vbLf) > 0 Then
MsgBox "vbLfが含まれています"
End If
'vbLfが含まれているかを確認
If InStr(a, vbCr) > 0 Then
MsgBox "vbCrが含まれています"
End If
'vbLfが含まれているかを確認
If InStr(a, vbCrLf) > 0 Then
MsgBox "vbCrLfが含まれています"
End If
End Sub
結果は「vbLfが含まれています」となりました。それ以外の「vbCr」や「vbCrLf」は含まれていません。なので、セル内の改行コードは「vbLf」となります。
VBAで改行を使う場合は vbLf がいい
セル内で改行した場合は「vbLf」が入力されますので、VBAで改行を扱う場合は「vbLf」を使うと良さそうです。
VBAで文字列を扱う場合や、メッセージボックス内で改行する場合に、とりあえず、改行コードは「vbLf」を使っておくという感じです。
テキストファイルの改行を確認
Windowsのメモ帳で改行する場合の改行コードは「vbCrLf」となります。
これにはちょっと注意が必要となります。
エクセルで改行を使うときは、基本的に「vbLf」ですけれども、メモ帳などのテキストファイルでは「vbCrLf」が使われたりします。
テキストファイルの改行は vbCrLf
メモ帳で改行したデータ(test.txt)を用意して、VBAで確認してみます。
上図のメモ帳で作ったデータをエクセルに取り込んでみます。
VBA
Sub test11()
'ファイルパスを設定
Dim FilePath As String
FilePath = ThisWorkbook.Path & "¥test.txt"
'テキストファイルの値を取得
With CreateObject("Scripting.FileSystemObject")
With .GetFile(FilePath).OpenAsTextStream
buf = .ReadAll
.Close
End With
End With
'セルに値を入力
ActiveSheet.Cells(1, 1) = buf
End Sub
改行された値を取得できましたが、見た目には改行コードの違いが分かりませんので、上記で使ったVBAを使って改行コードを確認してみます。
VBA
Sub test10()
Dim a As String
'セルの値を取得
a = ActiveSheet.Cells(1, 1).Value
'vbLfが含まれているかを確認
If InStr(a, vbLf) > 0 Then
MsgBox "vbLfが含まれています"
End If
'vbLfが含まれているかを確認
If InStr(a, vbCr) > 0 Then
MsgBox "vbCrが含まれています"
End If
'vbLfが含まれているかを確認
If InStr(a, vbCrLf) > 0 Then
MsgBox "vbCrLfが含まれています"
End If
End Sub
「vbLf」、「vbCr」、「vbCrLf」の全てが順番に表示されました。ということは、全ての改行コードを含んでる事を意味していますので、「vbLf」と「vbCr」を合わせて使うと「vbCrLf」になったことから考えても、この改行コードは「vbCrLf」であるということになります。
vbNewLineを使ってみる
VBAで、「vbNewLine」を使って、セルに値を入力してみます。
VBA
Sub test12()
'変数a を宣言
Dim a As String
'vbNewLine で改行
a = "aaa" & vbNewLine & "bbb"
'セルに入力
ActiveSheet.Cells(1, 1) = a
End Sub
セル内で改行することができました。
続いて、メッセージボックスでも改行してみます。
VBA
Sub test13()
'変数a を宣言
Dim a As String
'vbLf で改行
a = "aaa" & vbNewLine & "bbb"
'メッセージボックスへ出力
MsgBox a
End Sub
メッセージボックスでも改行できました。