つらつら Excel VBA

私の備忘録です。

Trimとデータ型について

セル内の文字の前後に空白があると、セル編集で中身を見てみないことには分からず気づきにくい。
そんな時は文字の前後にある空白を除去してくれるTrim便利。

Trim(引数)、戻り値はString

前後の空白は全て敵!何も考えずこんな感じの脳筋プログラムを作りました。

Dim r As Range
For Each r In Activesheet.UsedRange
    r.value = Trim(r.value)
Next

できれば良いのだ!Trimの話は以上!


ここから全然違う話になります。
なんやかんやで何度も実行するハメになりまして、2度目のTrimは意味が無いのでTrimする前に比較を入れました。面倒事の始まり!

If  r.value  <> Trim(r.value) Then
    r.value = Trim(r.value)
End If

これは意味の無い比較。エラーにはならないけど、やらない方がマシ。扱うデータに依るけど一般的にセルには文字、数値、日付データが入ってます。この例だと数値や日付のデータが来た場合、Trimで返されたStringと比較すると、Excelが気を利かせて不一致判定を出します。そもそも他言語ではエラーになる気がします。
文字は文字と比較、数値は数値と比較、日付は日付と比較するのが正しいです。

という事でセル値のデータ型を調べてから比較することになります!型を調べるにはTypeNameを使います!Trimしたいだけだったのに!面倒なのでやりません!!

以上。