【Excelマクロ】VBA Trim関数の使い方|前後の空白を簡単に削除する方法と注意点

スポンサードリンク
VBA
  • Trim関数って何?何ができるの?
  • VBAでのTrim関数の使い方を知りたい
  • Trim関数を使う際の注意点を知っておきたい

このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。

  • Trim関数でできることがわかる
  • Trim関数の使い方・書き方を学べる
  • Trim関数を扱う際の注意点を知れる

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

スポンサードリンク

VBAのTrim関数とは?(Excelマクロ)

VBA(Excelマクロ)の「Trim」は、文字列の前後に入った「スペース」を削除できる関数です。
※「 abcd 」→「abcd」

【いつ使うの?】
「Replace関数」や「Left関数」を使用した後、どうしても前後にスペースが残ってしまう場合があります。
そんな時に「Trim関数」が活躍します。
※「abcd efg」→Left→「abcd 」→Trim→「abcd」など

使い方も併せて解説した方がわかりやすいかと思いますので、次項をご覧ください。

スポンサードリンク

Trim関数の使い方

まずは簡単な使い方を見ていきましょう。

簡単な使い方

「Utatane」という文字列の前後に入ったスペースを削除してみましょう。
下記のVBAコードを見てください。

Sub トリム()
    Debug.Print " Utatane "       ' トリムなし
    Debug.Print Trim(" Utatane ") ' トリムあり
End Sub

2行目が文字列そのまま、3行目がTrim関数を使った例です。
それぞれ「Debug.Print」で結果を表示させています。

実行結果は下図のとおりです。

実行結果

Trim関数ありの場合は、前後のスペースが削除されています。

しかしながら、ここでいくつかの疑問が沸くかと思います。

  • 2つ以上の連続したスペースも削除できるの?
  • 全角スペースも削除できるの?
  • 文字列の途中に入ったスペースは削除できないの?

次項でまとめて解決いたします。

よくある疑問

前項で挙げた疑問をまとめて実行してみましょう。
下記のVBAコードを見てください。

Sub トリム()
    Debug.Print " Utatane "                  ' トリムなし
    Debug.Print Trim(" Utatane ")            ' 半角スペース
    Debug.Print Trim("  Utatane  ")          ' 半角スペース×2
    Debug.Print Trim(" Utatane ")           ' 全角スペース
    Debug.Print Trim("My name is Utatane")   ' 文字間にスペースあり
End Sub

2・3行目は比較用として、前項のまま残しています。

実行結果が下図です。

最後以外は問題なく削除できておりました。

  • 2つ以上の連続したスペースも削除できるの? → OK(可能)
  • 全角スペースも削除できるの? → OK(可能)
  • 文字列の途中に入ったスペースは削除できないの? → NG(不可)

文字間のスペースは「Replace関数」を使って削除しましょう。

では次に、少し高度な使い方を見ていきましょう。

少し高度な使い方(応用例)

まずは変数を経由した削除方法です。

変数を経由する

これまではTrim()の引数に直接文字列を指定しましたが、
変数を引数として指定することも可能です。

【引数とは?】
引数は「引き渡す数(引き渡す値)」のことで、Trim関数に渡す値を指します。
引数として「前後にスペースが入った文字列」を渡すと、「スペースが削除された文字数」を私たちが受け取ります。
この受け取る値を「返り値(戻り値)」といいます。

例えば、魚屋さんにアジの3枚おろしを作ってもらいたい場合は、アジを渡して3枚おろしを受け取ります。
アジが引数、3枚おろしが返り値といったところでしょうか。

変数(name)に値( Utatane )を代入し、その変数(name)をTrimに引き渡してみます。

Sub トリム()
    Dim name As String
    name = " Utatane "
    Debug.Print name
    Debug.Print Trim(name)
End Sub
変数を引き渡した場合の実行結果

文字列を直接引き渡した場合と同じ結果になりました。
変数については、下記記事をご参考ください。

LTrim・RTrim

Trimと同類の関数に「LTrim」「RTrim」というものがあります。

  • Trim:前後のスペースを削除
  • LTrim:左側(先頭)のスペースを削除
  • RTrim:右側(末尾)のスペースを削除

使い方は「Trim」と同じです。

Sub トリム()
    Debug.Print " Utatane "        ' トリムなし
    Debug.Print Trim(" Utatane ")  ' Trim(前後のスペースを削除)
    Debug.Print LTrim(" Utatane ") ' LTrim(左側のスペースを削除)
    Debug.Print RTrim(" Utatane ") ' RTrim(右側のスペースを削除)
End Sub
LTrim・RTrimの実行結果

実践的な活用例

ここからは、より実践的な活用例を2つ紹介いたします。

セルの文字列に適用

セル内の文字列にTrim関数を適用した例です。

セルの文字にTrimを適用
Sub セル内の文字をトリム()
    Dim val As String
    val = Range("A1").Value
    val = Trim(val)
    Range("A1").Value = val
End Sub

上記VBAコードにて、下記の処理を行っております。

  1. A1セルの値を取得し、変数(val)に代入
  2. Trimで前後のスペースを削除し、変数に再代入
  3. 変数の値をA1セルに上書き

▼関連記事

複数のセルに適用

前項の処理を複数セルに適用した例です。

Sub 複数のセルをトリム()
    Dim rng As Range
    For Each rng In Range("A1:A5")
        rng.Value = Trim(rng.Value)
    Next rng
End Sub

スペース無し(A3)も混ざっていますが、エラーは出ません。

For EachでA1~A5の範囲をループ処理しています。
For Eachについては、下記記事をご参考ください。

スポンサードリンク

Trim関数を使う際の注意点

Trim関数の特徴やできることをおさらいしましょう。

  • Trim関数は文字列の前後のスペースを削除できる
  • 全角スペースも削除できる
  • スペースが入っていない文字列に適用してもエラーは出ない
  • 文字列の途中にあるスペースは削除できない
  • 削除できるのはスペースのみ
  • 「_(アンダーバー)」「,(カンマ)」「.(ドット)」などは削除できない

削除できるのは前後のスペースのみで、「_(アンダーバー)」などは削除されません。

スポンサードリンク

最後に

VBA(Excelマクロ)のTrim関数について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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