Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » マクロで文字列の空白・スペースを削除する-Replace関数

マクロで文字列の空白・スペースを削除する-Replace関数

対象:Excel2007, Excel2010, Excel2013

セル内の空白(半角スペース・全角スペース)を削除するSUBSTITUTE関数を使った数式をご紹介している記事は、このサイト・インストラクターのネタ帳の人気記事の一つです。

スペースを削除する処理が頻繁に発生すると、マクロにしたいという要望が出てきます。

「excel vba 文字列から空白を取り除く」
「エクセル vba 文字間の空白をとる」
といった検索でのこのサイト・インストラクターのネタ帳へのアクセスも見られます。

[スポンサードリンク]

スペースを全て削除するサンプルマクロ

以下のようなマクロで、選択されているセルに入力されている文字列から空白(半角スペース・全角スペース)をすべて削除することができます。

Sub スペースを全て削除する()
 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
としてください。

また、いきなり空白をすべて削除するのが怖いという場合は、スペース・空白にだけ下線を引くマクロを使ってスペースを可視化して目視確認するというのも一つの考え方でしょう。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » マクロで文字列の空白・スペースを削除する-Replace関数

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.