【VBA】指定セルから改行を削除する

エクセル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