この記事ではVBAで文字列から空白(スペース)を取り除く方法についてご紹介します。
- 文字の前後や途中にある空白を取り除きたい人
- 複数人で入力したデータを正確に読み取りたい人
- 意味の分からない空白に悩まされている人
システムから出力したデータや不特定多数が入力するような表では、変な位置にスペースが入力されている事が多々ありますよね。
スペースの場合は見た目で分からないケースもあり、マクロを実行している時にもエラーとして検知されずそのまま処理が進んでしまう事もあります。
この対策をせずにマクロを作成するとスペースが入力されているせいで、思っていた通りの動作をしてくれない事もありますので気をつけましょう。
空白の取り除き方は4種類
文字列の空白を取り除く方法は複数あります。
空白の位置によって使うコードは異なりますので、ある程度予測出来るものでしたら適切なコードを選んで使用すれば問題ありません。
ご紹介する4つのコードで空白への対策はバッチリです!!
文字列の前に付いている空白だけを取り除きたい場合
文字列の先頭に空白がある場合 ” ましゅかぶろぐ” のような文字列に対してはLTrimを使用する事で文字列の前にある空白を取り除く事が出来ます。
Strings.LTrim ( “先頭の空白を取り除きたい文字列” )
LTrimは全角・半角どちらの空白(スペース)も取り除く事が出来ます。
1 2 3 4 5 |
Sub sample() MsgBox (Strings.LTrim(" ましゅかぶろぐ")) End Sub |
文字列の後ろに付いている空白だけを取り除きたい場合
文字列の末尾に空白がある場合 “ましゅかぶろぐ ” のような文字列に対してはRTrimを使用する事で文字列の後ろにある空白を取り除く事が出来ます。
Strings.RTrim ( “末尾の空白を取り除きたい文字列” )
RTrimは全角・半角どちらの空白(スペース)も取り除く事が出来ます。
1 2 3 4 5 |
Sub sample() MsgBox (Strings.RTrim("ましゅかぶろぐ ")) End Sub |
文字列の前後についている空白を取り除きたい場合
文字列の先頭と末尾の両方に空白がある場合 ” ましゅかぶろぐ ” のようなケースですね。
この空白を取り除く方法は2つあり、先程ご紹介したLTrimとRTrimをネストして使用するかTrimを使用して取り除く方法がります。
Strings.Trim ( “先頭と末尾の空白を取り除きたい文字列” )
または
Strings.LTrim(Strings.RTrim(“先頭と末尾の空白を取り除きたい文字列“)))
Trimは全角・半角どちらの空白(スペース)も取り除く事が出来ます。
1 2 3 4 5 6 7 |
Sub sample() MsgBox (Strings.Trim(" ましゅかぶろぐ ")) MsgBox (Strings.LTrim(Strings.RTrim(" ましゅかぶろぐ ")) End Sub |
Trimについてはこちらの記事で詳細に解説しています。※新しいウィンドウで開きます。
文字列内の空白を全て取り除きたい場合
どこに空白が入るか全く分からないような状態では、文字列から空白を全て取り除いてしまう方が良いでしょう。
ただし、文字列内の空白も削除されてしまう為「社員番号 名前」のように文字列をスペースで区切っている部分も「社員番号名前」のようになってしまいます。
文字列から全ての空白を取り除く場合は他のマクロや業務に影響が出ないかも確認しましょう。
strの部分は変数になっており、変数に “空白を全て取り除きたい文字列” を代入します。
Replace(str , ” ” , “” ) ‘半角スペースを取り除く
Replace(str , “ ” , “” ) ‘全角スペースを取り除く
※必ず全角スペースを入力してください。半角スペースを2回入力しても見た目は同じですが、
実行時に全角スペースを取り除いてくれません。
Trimとは違い、Replaceで空白を取り除く場合は半角スペースと全角スペースを別々に取り除く必要があります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub sample() Dim str As String str = " 空白を 全て 取り除 きた い文字列 " str = Replace(str, " ", "") '半角スペースを取り除く str = Replace(str, " ", "") '全角スペースを取り除く MsgBox str End Sub |
半角スペースと全角スペースどちらか一つだけでは全て取り除く事は出来ません。
あえて片方だけを取り除く処理を作る事も出来ますので、文字列内の消したくないスペースを予めどちらかに統一しておくことで消さずに残して置く事も出来ます。
まとめ
今回ご紹介した空白を取り除く方法ですが私がVBAの学習を始めた時には存在を知らず、意味のわからない空白に悩まされた過去があります。
見つけた時にもっと早く言ってよ!!(調べるの下手くそなだけ)と思ったのを鮮明に覚えてます笑
人によっては何度も使うようなコードではありませんが思い出して調べる事が出来るように、存在だけしっかり覚えていただければ問題ありません!!
様々なシーンで使用出来ますのでしっかり抑えておきましょう。
コメント