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種類あります。

 改行コードは

vbCrLf
Chr(13) + Chr(10)
キャリッジリターンとラインフィードの組み合わせ。(メモ帳で使う)
vbLf
Chr(10)
Line feed(ラインフィード)の略で「1行下に移動する」という命令です。(VBAや Excelで使う)
vbCr
Chr(13)
Carriage return(キャリッジリターン)とよばれる組込定数で「左端に戻る」という命令を意味しています。(MacOSで一般的な改行コード。使う場面はあまりない)
vbNewLine
Chr(13) + Chr(10)。
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

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