セル内の空白(半角スペース・全角スペース)を削除するSUBSTITUTE関数を使った数式をご紹介している記事は、このサイト・インストラクターのネタ帳の人気記事の一つです。
スペースを削除する処理が頻繁に発生すると、マクロにしたいという要望が出てきます。
「excel vba 文字列から空白を取り除く」
「エクセル vba 文字間の空白をとる」
といった検索でのこのサイト・インストラクターのネタ帳へのアクセスも見られます。
スペースを全て削除するサンプルマクロ
以下のようなマクロで、選択されているセルに入力されている文字列から空白(半角スペース・全角スペース)をすべて削除することができます。
Dim rng As Range
Dim txt As String For Each rng In Selection.Cells
txt = rng.Value
txt = Replace(txt, " ", "")
txt = Replace(txt, " ", "")
rng.Value = txt
Next rng
End Sub
サンプルマクロの解説
選択されているセルに対してFor Each~Nextループを回して、順番に処理を行っています。
For Each rng In Selection.Cells
セルに入力されている値を変数・txtに代入して、
txt = rng.Value
VBAのReplace関数で半角スペースを削除し、
txt = Replace(txt, " ", "")
全角スペースを削除して、
txt = Replace(txt, " ", "")
セルの値を上書きしています。
rng.Value = txt
文字列を置き換える関数を使って半角スペースと全角スペースを置換する、という考え方はワークシート関数・SUBSTITUTEを使った数式と同じです。
上記のマクロでは、スペースを削除したいセルを選択するという仕様にしていますが、例えばA1:A10セルのスペースをすべて削除するなら、
For Each rng In Selection.Cells
の部分を、
For Each rng In Range("A1", "A10")
に、アクティブシートのすべてのスペースを削除するのなら
For Each rng In ActiveSheet.UsedRange
としてください。
また、いきなり空白をすべて削除するのが怖いという場合は、スペース・空白にだけ下線を引くマクロを使ってスペースを可視化して目視確認するというのも一つの考え方でしょう。
- Newer:PowerPointのタイトルプレースホルダーの文字列を取得するExcelマクロ
- Older:かなり霧が晴れた
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » マクロで文字列の空白・スペースを削除する-Replace関数