スペースだけが入力されたセルに対してTrim関数を使ったら?
よく、Trim関数のお世話になる。
文字列の前後にある、不要なスペースを取り除いてくれる。実は最近まで、単語間にある複数のスペースを、一つ残しで除去してくれることを知らなかった。
ここで、ふと思った。
「全部スペースだったら、何が残るのか」
確認してみたところ、どうやら全てのスペースが除去されるようだ。
何ということだ。今まで、空白行のふりをしてスペースが入力されているセルを、とても面倒な方法で処理していたとは。
Sub 空白行削除_昨日までの私() Dim myReg As RegExp Set myReg = New RegExp myReg.Pattern = "^\s+$" Dim r As Range For Each r In Selection If myReg.Test(StrConv(r, vbNarrow)) Then r = vbNullString End If Next Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub
空白行の削除に正規表現を用いるという、大仰な仕掛けをこしらえていたわけで。
実は、これでも良かったのか。
Sub 空白行削除_今日からの私() Dim r As Range For Each r In Selection r = Trim(r) Next Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub
ただし、文字列の前後にあるスペースが「意味のある空白」である場合(※)、これではちと都合が悪い。そんな時は、再び「昨日までの私」が活躍することになるのだろう。
※そのような使い方は、極力避けたいですね。
参考まで。