指定した文字列を検索し別の文字列に置換する(Replace関数)|Excel VBA |
引数Findで指定した文字列を、Expressionで指定した文字列内で検索し、見つかった場合には、引数Replaceで指定した文字列に置換します。
引数Countでは、置換する回数を指定します。
つまり、1を指定した場合には、最初に見つかった文字列のみを置き換えます。
省略時には全て置換えられます。
構文 Replace(Expression, Find, Replace, Start, Count, Compare)
設定項目 | 内容 |
---|---|
Expression | 置換元の文字列式を指定 [省略不可] |
Find | 検索する文字列を指定 [省略不可] |
Replace | 置換する文字列を指定 [省略不可] |
Start | 検索開始位置を指定。省略時は1 [省略可能] |
Count | 置換する回数を指定。省略時は全て置換 [省略可能] |
Compare | 比較モードを指定(表参照) [省略可能] |
・引数Compareで指定する比較モードを表す定数一覧(VbCompareMethod列挙体のメンバ)
定数 | 値 | 説明 |
---|---|---|
vbBinaryCompare | 0 | バイナリ モードの比較 |
vbTextCompare | 1 | テキスト モードの比較 |
vbDatabaseCompare | 2 | Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較 |
次のサンプルでは、Replace関数の代表的な使い方を3例紹介しています。
Sub ReplaceSample()
Dim myStr As String
myStr = "A B C A B C"
MsgBox "『" & myStr & "』の空白を削除します" & vbCrLf & _
"『" & Replace(myStr, " ", "") & "』" '--(1)
myStr = "ABCABCabc"
MsgBox "『" & myStr & "』のすべてのCを*に置換します" & vbCrLf & _
"『" & Replace(myStr, "C", "*", , , vbTextCompare) & "』" '--(2)
myStr = "モグタンがタンタンメンを食べた"
MsgBox "『" & myStr & "』の6文字目以降のタンを" & _
"1つ空白に置換します" & vbCrLf & _
"『" & Left(myStr, 5) & Replace(myStr, "タン", "", 6, 1) & "』" '--(3)
End Sub
(1)では置換文字列に長さ0の文字列("")を指定することで、検索した文字列(この例では空白)を削除しています。文字列中のスペースを削除するには、このようにReplace関数を使用します。
(2)ではテキストモードで比較しているため、全角と半角、および大文字と小文字のすべての文字"C"を"*"に置換しています。
(3)では検索開始位置に6文字目を、置換回数に1を指定し、文字列"タン"を1つだけ削除しています。ただし、検索開始位置に6文字目を指定すると、置換後にReplace関数が返す文字列も6文字目以降(この例では"タンメンを食べた")となります。そのため、検索開始位置より左にある文字列をLeft関数で取得して連結しています。