エクセルVBAでよく使うコードの備忘録。指定したセルに含まれる改行文字を削除して、一括で改行を削除するコード。改行コードについて詳しく知りたい方はこちらをご参照ください。
Replaceメソッド
改行文字列を削除する方法としては、RangeオブジェクトのReplaceメソッドを活用して、改行文字列を空白文字列(””)に置き換える方法が考えられます。Replaceメソッドは以下のように使用します。
なお、カッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
Replaceメソッド
Call [Rangeオブジェクト].Replace("[置換前の文字列]", "[置換後の文字列]", [検索方法])
検索方法は、
- 完全一致:xlWhole
- 部分一致:xlPart
を指定します。今回はセルに含まれている改行コードを置換して削除するので「xlPart」を指定します。
サンプルコード
下記のサンプルコードは、指定したワークシート内のセルから改行コードを一括で削除します。改行コードをすべて取り除くため、「vbCrLf」、「vbCr」、「vbLf」、「VbNewLine」を全て置換しています(vbNewLineの置換が必要なケースはないかもしれませんが一応念のため)。
ちなみに、置換前の文字列を改行コードから変更すれば、他のある特定の文字列をセル内から削除(あるいは置換)することが可能です。
改行コードを置換する
Public Sub DeleteNewLineStr()
'--- ワークシートオブジェクトを設定 ---'
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
'--- 削除対象のアドレス(A1:Z100など) ---'
Dim adrStr As String
adrStr = "[アドレス文字列(A1:Z100など)]"
'--- 改行文字列を順に置換して削除する ---'
Call ws.Range(adrStr).Replace(vbCrLf, "", xlPart)
Call ws.Range(adrStr).Replace(vbCr, "", xlPart)
Call ws.Range(adrStr).Replace(vbLf, "", xlPart)
Call ws.Range(adrStr).Replace(vbNewLine, "", xlPart)
End Sub