Replace関数の複数行置換えテスト
下のシートは、C2に置換対象文字列、C3に検索する文字列、C4に置換える文字列が入力されています。
検索する文字列は大文字の「BUSINESS」を小文字の「business」に変えています。
置換える文字列は「受けておきます」を「受けます」に、「目的地」を「到着地」に、「BUSINESS」を「ビジネス」に変えています。
Replaceを使ったVBAを作成しました。
・引数のcountを省略し、置き換える文字列の個数を指定していません。
・compareの定数は、vbTextCompareにし大文字と小文字を区別していません。
Sub MyReplace()
Range("C5") = Replace(Range("C2"), Range("C3"), Range("C4"), , , vbTextCompare)
End Sub
実行結果です。
問題なく置換ができています。
見つからない場合のReplace関数の戻り値は、置換対象文字列になります。
一見すると置換できたかどうか分かりにくいので、事前にInstr関数でチェックするようにします。
・Instr関数で見つからない場合は「見つかりませんでした」と表示し、見つかった場合はReplaceを実行します。
Sub MyReplace()
If InStr(1, Range("C2"), Range("C3"), vbTextCompare) > 0 Then
Range("C5") = Replace(Range("C2"), Range("C3"), Range("C4"), , , vbTextCompare)
Else
Range("C5") = "見つかりませんでした"
End If
End Sub
テストします。
検索する文字列を変更し実行すると、「見つかりませんでした」と表示できました。
最後の改行文字も正常に置換できるかテストしました。
検索する文字列の最後に改行を追加すると、改行も正常に置換られ、結果の改行が削除できています。
複数回の置換ができるかテストしました。
置換対象文字列を2つにしテストすると、2つとも正常に置換えられています。