「VBA "cells.replace" 改行コード削除」
という検索キーワードでのアクセスに気が付きました。
Rangeオブジェクトに用意されているReplaceメソッドを使って、
セル内の改行を削除するには、どのようなコードを書けばいいのかを探していらしたのでしょう。
Range.Replaceメソッドでセル内改行を削除する
以下の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
- Newer:変数のPrivateとPublicの違い
- Older:オブジェクト名がコードに書かれるケース
Home » Excel VBA Rangeオブジェクト » セル検索 » Replaceメソッドでセル内改行を削除する