Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 - Trim

Excel VBA VBA
スポンサーリンク

Trim は「文字列の前後についた“余計な空白”を掃除するクリーナー」

Trim 関数は、
文字列の「前」と「後ろ」についているスペースを取り除くための関数です。

イメージとしては、

「文字列の両端にくっついているホコリ(空白)だけをサッと拭き取る」

そんなクリーナーです。

ここで大事なのは、

  • 消すのは「前後の空白」だけ
  • 文字列の“真ん中”にある空白はそのまま残す

という点です。


Trim の基本的な動きとシンプルな例

基本構文

書き方はとてもシンプルです。

Trim(文字列)
VB

戻り値は、「前後の空白を取り除いた文字列」です。

まずは動きを目で確認してみる

Sub SampleTrimBasic()

    Dim s As String
    Dim t As String

    s = "  Excel VBA  "   ' 前後に半角スペースが2つずつ

    t = Trim(s)

    MsgBox "[" & s & "]" & vbCrLf & "[" & t & "]"

End Sub
VB

メッセージボックスには、例えばこんな感じで表示されます。

[ Excel VBA ]
[Excel VBA]

前後のスペースだけが消えて、
真ん中のスペース(”Excel VBA” の間)はそのまま残っているのが分かると思います。


「前後だけ」「真ん中は残す」という性質をしっかり掴む

真ん中のスペースは消えない

Sub SampleTrimMiddle()

    Dim s As String
    Dim t As String

    s = "Excel   VBA"   ' 真ん中にスペースが3つ

    t = Trim(s)

    MsgBox "[" & s & "]" & vbCrLf & "[" & t & "]"

End Sub
VB

この場合、前後に空白はないので、Trim してもまったく同じ文字列が返ってきます。

Trim はあくまで「前」と「後ろ」だけを見る関数です。
「間のスペースも詰めたい」場合は、Replace など別の手段が必要になります。


Trim が本当に役立つのは「入力チェック」と「比較」のとき

「空かどうか」を判定するときの定番パターン

セルに何か入力されているかどうかを判定するとき、
よくこう書きたくなります。

If Len(Range("A1").Value) = 0 Then
    ' 空とみなす
End If
VB

でも、A1 に「スペースだけ」が入っている場合、
Len は 1 以上になってしまうので、「空ではない」と判定されてしまいます。

人間の感覚としては「スペースだけなら実質空でしょ」と思いますよね。
そこで Trim の出番です。

If Len(Trim(Range("A1").Value)) = 0 Then
    ' 実質的に空(スペースだけのケースも含めて空とみなす)
End If
VB

Trim で前後のスペースを削ってから Len を見ることで、

  • 何も入っていない
  • スペースだけ入っている

どちらも「空」として扱えるようになります。

ここは実務で本当に頻出するパターンなので、
「空チェックするときは Trim とセット」
くらいに覚えておいていいです。

文字列比較の前に Trim しておく

例えば、A1 に「OK」と入力されているかチェックしたいとします。

If Range("A1").Value = "OK" Then
    ' OK のときの処理
End If
VB

ところが、ユーザーが「OK 」とスペース付きで入力していたら、
見た目は OK に見えても、実際は "OK " なので一致しません。

こういうときも Trim を挟みます。

If Trim(Range("A1").Value) = "OK" Then
    ' 前後のスペースを無視して判定
End If
VB

これで、

  • “OK”
  • ” OK”
  • “OK “
  • ” OK “

など、前後にどれだけスペースが付いていても、
全部「OK」として扱えるようになります。

「人間はスペースを気にしないけど、コンピュータは気にする」
そのギャップを埋めるのが Trim です。


LTrim / RTrim との違いも軽く知っておく

左だけ・右だけ消したい場合

Trim は「左右両方の空白」を消しますが、
片側だけを消す兄弟関数もあります。

LTrim(文字列)   ' 左側(先頭)の空白だけを削除
RTrim(文字列)   ' 右側(末尾)の空白だけを削除
VB

例えば、

Sub SampleLTrimRTrim()

    Dim s As String

    s = "  Excel  "

    MsgBox "[" & LTrim(s) & "]"   ' → "[Excel  ]"
    MsgBox "[" & RTrim(s) & "]"   ' → "[  Excel]"

End Sub
VB

超初心者の段階では、
「両端まとめて掃除する Trim」だけ覚えておけば十分ですが、
「片側だけ」という選択肢もあるんだ、くらいは知っておくと後で楽です。


Trim を使うときに意識してほしい重要ポイント

「見えないスペース」がバグの原因になる

Excel では、見た目には分かりにくいスペースがよく紛れ込みます。

  • コピー&ペーストしたときに余計な空白が付く
  • ユーザーが入力時にスペースキーを押してしまう
  • 外部システムから取り込んだデータに前後の空白が含まれている

こういうとき、Trim を挟まずに比較や検索をすると、

「同じに見えるのに一致しない」
「なぜかヒットしない」

という、イライラするバグの原因になります。

だからこそ、

  • 比較する前
  • 空かどうか判定する前

に、一度 Trim を通して“素の姿”にしておくのがとても大事です。

Trim では「全角スペース」は消えないことに注意

標準の Trim は、「半角スペース」を対象にします。
全角スペース(” ”)は、そのまま残ってしまいます。

もし全角スペースも消したいなら、
Replace と組み合わせます。

s = Trim(s)                 ' 前後の半角スペースを削除
s = Replace(s, " ", "")    ' 全角スペースを削除
VB

あるいは、前後の全角スペースも消したいなら、
もう少し工夫が必要ですが、
超初心者のうちは「Trim は半角スペースに効く」と覚えておけばOKです。


まとめ:Trim は「文字列を比較可能な状態に整えるための下ごしらえ」

Trim の本質は、

「人間から見た“余計な空白”を取り除いて、
 文字列を“素の状態”に整える」

ことです。

押さえておきたいポイントをコンパクトにまとめると、

  • Trim(文字列):前後の半角スペースだけを削除する
  • 真ん中のスペースはそのまま残る
  • 空チェックや文字列比較の前に Trim を挟むと、実務コードが安定する
  • 全角スペースには効かないので、必要なら Replace と組み合わせる

タイトルとURLをコピーしました