VBAで改行する

VBA を使って文字列をセルに入力したりメッセージボックスに文字列を表示する場合に、セル内やダイアログボックス内で改行を行いたい場合があります。 VBA では改行を行う場合に使用できる定数がいくつか用意されており、使用する状況に応じて使い分ける必要があります。ここでは VBA で改行を行う方法について解説します。

(Last modified: )

改行するときに利用できる定数の種類

VBA を使って改行を行う場合には改行を表す文字コードである Chr(10)Chr(12) を文字列と連結することで改行を行うことができます。

下記はセルの値として文字列を入力する場合に、途中で改行する場合です。ラインフィード文字を表す Chr(10) を文字列と文字列の間に連結して改行しています。

Sub テスト()
    Range("B2").Value = "東京都" & Chr(10) & "中央区"
End Sub

この Chr(10)Chr(12) を直接記述する代わりに、改行を表す定数として次のものが用意されています。

定数
vbCrLfChr(13) + Chr(10)
vbCrChr(13)
vbLfChr(10)
vbNewLineChr(13) + Chr(10)。Macintosh の場合は、Chr(13)

例えばラインフィードを表す Chr(10) を直接記述する代わりに vbLf と記述できます。またキャリッジリターンを表す Chr(13) を直接記述する代わりに vbCr と記述できます。 vbCrLfChr(13)Chr(10) を両方記述する代わりに使用できます。

また vbNewLine 現在のプラットフォームに対応する文字の代わりとして使用できます。 Windows 環境であれば Chr(13) + Chr(10) 、 Mac の環境であれば Chr(13) になります。

先ほどのセルの値を途中で改行する場合は、定数を使って次のように記述できます。

Sub テスト()
    Range("B2").Value = "東京都" & vbLf & "中央区"
End Sub

改行を行いたいときにどの改行用の定数を使用すればいいのかは、どんな時に改行を行いたいのかによって異なります。

セル内で改行する

Excel のシート上でセル内で改行を行うには Alt キー+ Enter キーで改行することができます。下記では AB と入力したあとで Alt キー+ Enter キーで改行したあとに CD と入力しています。

セル内で改行する(1)

ではこのセルの値を VBA で取得して、改行を行っているときに使用されている改行文字を取得してみます。下記では B2 セルの値を取得したあと、 1 文字ずつ文字を取り出して文字コードを出力しています。

Sub コード取得()
    Dim s As String
    Dim i As Integer

    s = Range("B2").Value

    For i = 1 To Len(s)
        Debug.Print Asc(Mid(s, i, 1))
    Next
End Sub

プログラムを実行してみると、イミディエイトウィンドウには「65 66 10 67 68」と表示されました。改行文字は 3 番目の文字なので文字コード 10 が使用されていることが分かります。

よって VBA からセルの値として改行文字を使用する場合は Chr(10) または vbLf を使用すればいいことが分かります。

例えば "東京都" + 改行 + "中央区" のような文字列をセルに入力したい場合は次のように記述します。

Sub テスト()
    Range("B2").Value = "東京都" & vbLf & "中央区"
End Sub

セル内で改行する(2)

このプログラムを実行すると B2 セルに次のように値が入力されます。

セル内で改行する(3)

セルに改行された値を入力することができました。

ダイアログボックス内で改行する

Excel のダイアログボックスで表示される文字列で改行を行う方法です。ダイアログボックスを VBA から表示するには次のように記述します。

Sub テスト()
    MsgBox "こんにちは"
End Sub

このプログラムを実行すると Excel 上にダイアログボックスが表示され、指定した文字列が表示されます。

メッセージボックス内で改行する(1)

ダイアログボックス内で表示される文字列を改行する場合、実行している環境に合わせて改行を行うのが適切なので vbNewLine を使用します。例えば先ほどのサンプルを次のように書き換えてみます。

Sub テスト()
    MsgBox "こんにちは" & vbNewLine & "お元気ですか?"
End Sub

このプログラムを実行すると Excel 上にダイアログボックスが表示され、次のように文字列が表示されます。

メッセージボックス内で改行する(2)

ダイアログボックスに表示される文字列を改行することができました。

-- --

VBA でセル内で改行される文字列を記述する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。