【VBA】文字列を置換する方法/削除する方法
今回はVBAで文字列を、①置換する方法と②削除する方法の2つを紹介します。
どちらの場合でもReplace関数を使用します。
①文字列を置換する方法
Sub ReplaceString()
Dim str As String
str = "abcdef"
'「c」を「置換」に置き換える
str = Replace(str, "c", "置換")
Debug.Print str 'ab置換def
End Sub
Replace関数の基本的な使い方はこのようになります。
サンプルコードでは文字列の中の「c」を「置換」に置き換えています。
Replace(元の文字列, 置換対象の文字列, 置き換える文字列)
Replace関数は「元の文字列」に含まれる「置換対象の文字列」を「置き換える文字列」に置換します。
補足:セルの文字列を置換する
Sub ReplaceString2()
'A1セルの「c」を「置換」に置き換える
Range("A1").Value = Replace(Range("A1").Value, "c", "置換")
End Sub
A1セルの文字列を置き換えたい、という場合はこのようにすれば変換することができます。
②文字を削除する方法(空文字に置換する)
Sub EraseString()
Dim str As String
str = "abcdef"
'「c」を削除する
str = Replace(str, "c", "")
Debug.Print str 'abdef
End Sub
文字を削除したい場合もReplace関数を使います。
削除したい場合は「置き換える文字列」を空文字"" にすれば削除されます。
Replace関数の任意の引数
Replace(expression, find, replace [start[,count[,compare]]])
Replace関数は省略可能な任意の引数が3つ存在します。(start, count, compare)
startはあまり使う機会が少ないので省きますが、あとの2つの引数の使い方を紹介します。
置換する回数(count)
Sub ReplaceCount()
Dim str As String
'「c」を最初の1つだけ「置換」に置き換える
str = "abcabcabc"
str = Replace(str, "c", "置換", Count:=1)
Debug.Print str 'ab置換abcabc
'「c」を最初の2つだけ「置換」に置き換える
str = "abcabcabc"
str = Replace(str, "c", "置換", Count:=2)
Debug.Print str 'ab置換ab置換abc
End Sub
引数のcountを設定すると置換する回数が制限されます。
Count:=1とすると最初の1つだけが置換されます。
Count:=2とすると最初の2つだけが置換されます。
大文字と小文字を区別しない(compare)
Sub ReplaceCompare()
Dim str As String
str = "abcABC"
'「c」を「置換」に置き換える(大文字と小文字を区別しない)
str = Replace(str, "c", "置換", compare:=vbTextCompare)
Debug.Print str 'ab置換AB置換
End Sub
デフォルトではReplace関数は大文字と小文字を区別して変換します。
しかし、compare:=vbTextCompareと設定すると大文字/小文字に関係なく置換が行われます。
大文字と小文字の両方を置換したい場合は引数compareにvbTextCompareを設定しましょう。