スペースだけが入力されたセルに対してTrim関数を使ったら?

f:id:Infoment:20190528231817p:plain

よく、Trim関数のお世話になる。
f:id:Infoment:20190528224959p:plain

文字列の前後にある、不要なスペースを取り除いてくれる。実は最近まで、単語間にある複数のスペースを、一つ残しで除去してくれることを知らなかった。
f:id:Infoment:20190528225337p:plain

ここで、ふと思った。
「全部スペースだったら、何が残るのか」
確認してみたところ、どうやら全てのスペースが除去されるようだ。
f:id:Infoment:20190528225815p:plain

何ということだ。今まで、空白行のふりをしてスペースが入力されているセルを、とても面倒な方法で処理していたとは。

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

ただし、文字列の前後にあるスペースが「意味のある空白」である場合(※)、これではちと都合が悪い。そんな時は、再び「昨日までの私」が活躍することになるのだろう。
※そのような使い方は、極力避けたいですね。

参考まで。