セル内の改行コードを削除する
A1:A10に直接入力された文字列からセル内改行だけを取り除きます。行や列は削除しません。
実行前に確認
- 対象の文字列を上書きします。通常の元に戻すは使えないため、実行前にブックのコピーを保存してください。
- 行の削除やセルの移動は行いません。数式が返す改行はこの例では変更しません。
1サンプルコード
Sub Example1139()
Dim ws As Worksheet
Dim c As Range
Dim s As String
Set ws = ThisWorkbook.Worksheets("Sheet1")
If MsgBox("A1:A10の文字列を改行なしの文字列に上書きします。続けますか?", vbYesNo + vbExclamation) <> vbYes Then Exit Sub
For Each c In ws.Range("A1:A10").Cells
If Not c.HasFormula And Not IsError(c.Value) Then
If VarType(c.Value) = vbString Then
s = Replace(CStr(c.Value), vbCr, "")
c.Value = "'" & Replace(s, vbLf, "")
End If
End If
Next c
End Sub表で見る処理のイメージ実行前・実行後のセルを見比べる
A1:A10に直接入力された文字列からセル内改行だけを取り除きます。行や列は削除しません。
A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。
実行前
| A | |
|---|---|
| 1 | 東京 営業所 |
| 2 | 大阪 支店 |
| 3 | 123 |
| 4 | =1+1 |
| 5 | 東京 本社 |
| 6 | — |
| 7 | — |
| 8 | — |
| 9 | — |
| 10 | — |
実行後
| A | |
|---|---|
| 1 | 東京営業所(注目セル) |
| 2 | 大阪支店(注目セル) |
| 3 | 123 |
| 4 | =1+1 |
| 5 | 東京 本社 |
| 6 | — |
| 7 | — |
| 8 | — |
| 9 | — |
| 10 | — |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
A1・A2は直接入力した改行付き文字列、A3は数値、A4は文字列として入力した「=1+1」、A5は="東京"&CHAR(10)&"本社"の数式結果です。「はい」を選ぶと直接入力文字列の改行だけを除きます。数値と数式は変更せず、先頭が=の文字列も数式へ変えません。先頭に付けるアポストロフィはセル画面には表示されません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A1:A10に文字を入れ、Alt+Enterでセル内改行を入れます。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
A1:A10が対象範囲です。Replaceの最後の空文字を半角スペースにすると、改行を空白に置き換えられます。代入時の先頭のアポストロフィは、=などで始まる文字列を数式に変えず文字列として保つための指定です。
- 4
マクロ内にカーソルを置いてF5で実行します。改行前後の文字がつながります。数式・数値・エラーのセルは変更しません。