セルに改行を入れる方法
セルに書かれた文章には、改行を入れたい箇所でAlt + Enterを押すと改行を入れることができます。
A2セルが改行を入れた状態です。
このときの改行にはLFが設定されています。LFとはLineFeedの略で、文字コードが10の1バイトの文字です。LFかどうかはExcelの見た目上は分かりません。
なお、改行コードについては以下に詳しく書いていますのでご参照ください。
「VBAの改行コード(CR、LF、CRLF)の使い方」
セルの最終行に空行を入れるには
セルに文章を書く際に、最下段に空行を入れたい場合があります。下のセルとの空白を入れたい場合や、印刷時の文字切れを防ぎたい場合に使われる手法です。
手で空行を入れるにはセルの文章の終端でAlt + Enterを押せばいいのですが、数が多いと面倒です。
以下の関数は、選択セル範囲の各セルの終端にLFを追加します。セルが空の場合は追加しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub AddNewLine() Dim r As Range '// セル '// 選択セル範囲をループ For Each r In Selection '// セルが空の場合は改行を入れない If r.Value = "" Then GoTo CONTINUE End If '// セルの終端がLFではない場合 If Right(r.Value, 1) <> vbLf Then '// 終端にLFを追加する r.Value = r.Value & vbLf End If CONTINUE: Next End Sub |
この関数は、セルに何も入力されていない場合は改行を入れないようにしています。
もし、空のセルでも改行を入れたい場合は、以下のように空セルかどうかの判定を外してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub AddNewLine() Dim r As Range '// セル '// 選択セル範囲をループ For Each r In Selection '// セルの終端がLFではない場合 If Right(r.Value, 1) <> vbLf Then '// 終端にLFを追加する r.Value = r.Value & vbLf End If Next End Sub |
使い方
上記AddNewLine()関数の使い方は、まずセルを選択します。セル範囲を選択しても動作します。
あとは、実行するだけです。実行すると以下のように入力されているセルの最終行に空行が追加されます。A3セルは空のため改行を入れていません。
なぜセル内の改行がLFと分かるのか?
改行コードにはCRとLFとCRLFの3種類がありますが、なぜセル内の改行がLFなのか分かるかというと、事前にお試しコードを書いて試しているためです。
まず、手でセル内にAlt + Enterで最終行に改行を入れます。
あとは入力したセルを選択した状態で、以下のコードでセルに書いてある文字の終端文字の文字コードを検出します。
1 2 3 4 5 6 7 |
Sub GetTerminalCharacter() Dim r As Range Set r = ActiveCell Debug.Print Asc(Right(r.Value, 1)) '// 10 が出力 End Sub |
実行すると「10」がイミディエイトウィンドウに出力されます。10という文字コードはLFのため、「セル内の改行コードはLFね」と判定できます。なお、「13」であればCRと判定します。
では、10がLFであることはどうやって知ればいいかですが、それはASCIIコード表を見ます。「ASCIIコード表」でネット検索すれば出てきますので探してみてください。