Excel VBAで文字列を置換する:Replace

VBA で文字列を置換する場合は、Replace メソッドを使用します。ここでは、Replace メソッドの使い方について説明します。

Replace メソッドの使い方

Repalce の構文は以下の通りです。

Replace(対象文字列, 置換される文字列, 置換する文字列 [, 開始位置] [, 置換回数] [, 比較モード])

Replace は第1引数で指定した文字列の中から、第2引数で指定した文字列を検索し、第3引数で指定した文字列に置換します。また、置換された後の文字列が戻り値として返されます。

第4引数以降は省略可能です。第4引数では、対象文字列の何文字目から検索するかを指定できます。第5引数では、置換する上限回数を指定できます。第6引数では置換するモードを指定できます。

置換に使用する主なモードは以下の通りです。

・vbBinaryCompare:大文字・小文字、半角・全角を区別する。
・vbTextCompare:大文字・小文字、半角・全角を区別しない。

デフォルトは vbBinaryCompare が設定されており、何も指定しない場合は大文字・小文字、半角・全角が区別されます。

文字列を置換する

以下は A を「*」に置換する例です。

Dim str As String
str = Replace("ABCABC", "A", "*")
MsgBox str ' *BC*BC

実行すると ABCABC の A が「*」に置換され、「*BC*BC」 と表示されます。

もし対象の文字列に置換される文字列が見つからなかった場合は、エラーとはならず何も置換されません。

Dim str As String
str = Replace("ABCABC", "E", "*")
MsgBox str ' ABCABC

単位を削除する

第3引数を「""」とすると、マッチした文字列を空文字に置き換えられるので、結果として削除することができます。たとえば、Cells(1,1) に「100個」という単位付きの値があったとします。

単位を消すのであれば、以下のようにすることで実現できます。

Dim str As String
Cells(1,1).Value = Replace(Cells(1,1).Value,"個","")

上の例では、結果としてセルA1に「100」と表示されます。

空白を取り除く

文字列内の余分な空白を削除する場合にも使えます。

Dim str As String
myStr = Replace("山田 太郎"," ","")
MsgBox str ' 山田太郎

上の例では、空白が削除され「山田太郎」と表示されます。


イベント