• ベストアンサー

VBAで正規表現

Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.2の方へ。 私が使用しているのは、ワークシート関数のTRIM関数です。 そのヘルプより抜粋です。 「文字列に複数のスペースが連続して含まれている場合、単語間のスペースを 1 つずつ残して、不要なスペースをすべて削除します。」 ということです。 そして、ワークシート関数をVBAで使用する方法として、Application.WorksheetFunctionオブジェクトを利用しているのです。 ちなみに、VBAのTrim関数は、文字列の先頭と末尾のスペースを除去するだけで、文字列中のスペースは除去されません。

その他の回答 (2)

  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.2

スペースが2つ以上重ならなければ、Replace関数を2回重ねればいいのですが…。(そんなことはないかな?) ↓こんな感じに…。 Replace(Replace(変数名," (全角スペース)"," (半角スペース)")," (半角スペース2個)"," (半角スペース1個)") あと、Trim関数はスペースを無条件に削除する関数と調べたら載っていたのですが…。(- -;

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 TRIMワークシート関数を使用してはいかがですか? TRIM関数は、2つ以上連続したスペースを1つにします。 全半角が混ざっていても、連続したスペースの先頭だけを残して、後を除去します。 例えばこんな感じ temp = " abc  bd  dd w ds  " MsgBox Replace(Application.WorksheetFunction.Trim(temp), " ", " ") ちなみに、Replace関数は先に通しても構わないと思います。 なお、先頭と末尾のスペースは全半角とも全部除去されます。

関連するQ&A