VBA で文字列を置換する場合は、Replace メソッドを使用します。ここでは、Replace メソッドの使い方について説明します。
Replace メソッドの使い方
Repalce の構文は以下の通りです。
1 |
Replace(対象文字列, 置換される文字列, 置換する文字列 [, 開始位置] [, 置換回数] [, 比較モード]) |
Replace は第1引数で指定した文字列の中から、第2引数で指定した文字列を検索し、第3引数で指定した文字列に置換します。また、置換された後の文字列が戻り値として返されます。
第4引数以降は省略可能です。第4引数では、対象文字列の何文字目から検索するかを指定できます。第5引数では、置換する上限回数を指定できます。第6引数では置換するモードを指定できます。
置換に使用する主なモードは以下の通りです。
・vbBinaryCompare:大文字・小文字、半角・全角を区別する。
・vbTextCompare:大文字・小文字、半角・全角を区別しない。
デフォルトは vbBinaryCompare が設定されており、何も指定しない場合は大文字・小文字、半角・全角が区別されます。
文字列を置換する
以下は A を「*」に置換する例です。
1 2 3 |
Dim str As String str = Replace("ABCABC", "A", "*") MsgBox str ' *BC*BC |
実行すると ABCABC の A が「*」に置換され、「*BC*BC」 と表示されます。
もし対象の文字列に置換される文字列が見つからなかった場合は、エラーとはならず何も置換されません。
1 2 3 |
Dim str As String str = Replace("ABCABC", "E", "*") MsgBox str ' ABCABC |
単位を削除する
第3引数を「""」とすると、マッチした文字列を空文字に置き換えられるので、結果として削除することができます。たとえば、Cells(1,1) に「100個」という単位付きの値があったとします。
単位を消すのであれば、以下のようにすることで実現できます。
1 2 |
Dim str As String Cells(1,1).Value = Replace(Cells(1,1).Value,"個","") |
上の例では、結果としてセルA1に「100」と表示されます。
空白を取り除く
文字列内の余分な空白を削除する場合にも使えます。
1 2 3 |
Dim str As String myStr = Replace("山田 太郎"," ","") MsgBox str ' 山田太郎 |
上の例では、空白が削除され「山田太郎」と表示されます。