VBAで文字列を別の文字列に置換する(Replace)

Replace

Replace関数は指定した文字列内の全てまたは一部を別の文字列に置換することができます。

指定した文字列内に置換したい文字列が複数ある場合は、まとめて置換することもできます。

Replace関数は引数の内容が空文字列だったりしても、エラーにならずに人間が考えるような都合のよい解釈をした結果を返してくれます。

なお、Excel上での検索と置換ダイアログによる置換を行うReplaceメソッドについては「VBAでセルの置換を行う(Replaceメソッド)」にて紹介しています。

構文

Expression 置換したい文字列を含む文字列を指定します。
Find 置換したい文字列を指定します。
Replace 置換後の文字列を指定します。
Start
(省略可)
引数Expressionから引数Findの検索を開始する位置を指定します。

先頭は1です。省略時は1として処理されます。

Count
(省略可)
置換する個数を指定します。

検索して見つかる個所が複数ある場合に引数Countで指定した個数だけが置換されます。

-1を指定した場合は見つかった全ての個所が置換されます。省略時は-1として処理されます。

Compare
(省略可)
文字列を引数Findで検索する場合に、バイナリモードとテキストモードのどちらで検索するかをVbCompareMethod列挙型で指定します。

VbCompareMethod列挙型

定数 内容
vbBinaryCompare 0 バイナリモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別する)
vbTextCompare 1 テキストモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別しない)

省略時はバイナリモードで検索されます。

バイナリモードとテキストモードの違いは、大文字と小文字、全角と半角、ひらがなとカタカナを区別するかしないかです。

バイナリモードの場合は区別しますが、テキストモードの場合は区別しません。

戻り値 置換後の文字列を返します。

置換できなかった場合は元文字列がそのまま返されます。

エラーが発生するパターン

Replace関数は普通に使っている場合ではあまりエラーにならないのですが、それでも以下の条件の場合はエラーになります。

  • 引数Expressionの元文字列がNullの場合
  • 引数Startが0以下(0もエラー)
  • 引数Countが-1未満(-1はOK)

ただ、上記のいずれも、普通に使っている場合にはあまり遭遇することは無いと思われます。

エラーチェックが必要な場合は以下のような感じでIsNull関数や値判定を使ってReplace関数処理を回避するなどで対応してください。

サンプルコード

各引数が未設定の場合などを含めたサンプルコードです。

関連記事

サブコンテンツ

このページの先頭へ