Home » Excel VBA Rangeオブジェクト » セル検索 » Replaceメソッドでセル内改行を削除する

Replaceメソッドでセル内改行を削除する

対象:Excel2010, Excel2013, Windows版Excel2016

「VBA "cells.replace" 改行コード削除」
という検索キーワードでのアクセスに気が付きました。

Rangeオブジェクトに用意されているReplaceメソッドを使って、

Excel.Range.Raplace

セル内の改行を削除するには、どのようなコードを書けばいいのかを探していらしたのでしょう。

[スポンサードリンク]

Range.Replaceメソッドでセル内改行を削除する

以下のSubプロシージャを実行すると、アクティブシート上の、全セルのセル内改行を削除できます。

Sub 改行コードを削除する()
 Cells.Replace _
   What:=vbLf, _
   Replacement:="", _
   LookAt:=xlPart
End Sub

Range.Replaceメソッドの引数Whatに、Excelのセル内改行コードを意味するvbLfを指定し、引数Replacementに空白文字列を指定すれば、セル内改行を削除できます。

マクロ記録も使ってみましょう

Excelの[検索と置換]ダイアログボックスで、セル内改行を検索するには、[Ctrl]+[J]キーを押すという、裏技的操作が割と知られています。

この裏技的操作を使って、セル内改行を削除する操作をマクロ記録してみると、以下のようなコードが作られます。

Cells.Replace What:="" & Chr(10) & "", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

この「What:="" & Chr(10) & ""」部分を定数vbLfにし、指定しなくても、まぁ大丈夫そうな引数を削除したのが上述の、
  Cells.Replace _
    What:=vbLf, _
    Replacement:="", _
    LookAt:=xlPart
です。

Replaceメソッドの挙動はFindメソッドの挙動と似ている

Range.Replaceメソッドは、検索を行うRange.Findメソッドと、結構似ています。

引数名を注意深く読んでいただければ、ReplaceメソッドとFindメソッドの引数は、ほとんど同じです。

Excel側で検索・置換を行ったときの条件の影響を受けるという点でも同じです。

上記のSubプロシージャでは、引数What・Replace・LookAtだけを指定していますが、Excel側で複雑な条件指定で検索・置換を行う可能性があるのなら、他の引数も指定しましょう。

最終更新日時:2018-09-18 19:10

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » セル検索 » Replaceメソッドでセル内改行を削除する

「セル検索」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.