【Excel VBA】文字列を置換する関数(Replace)

当ページのリンクには広告が含まれている可能性があります。
文字列を置換する

こんにちは、ユーキです。

今回は、VBAで文字列を置換する関数(Replace)を紹介します。

目次

文字列を置換する(Replace関数)

文字列を置換するには、Replace関数を使用します。

標準的な使い方(単純な置換)

特定の文字列を指定した文字列に置き換えます。

Dim txt As String
txt = Replace("xxx様お世話になっております", "xxx", "伊藤")
MsgBox txt

上記の処理を実行すると、「xxx」部分が「伊藤」に置き換わって、「xxx様お世話になっております」が表示されます。

第1引数に置換対象の文字列、第2引数に置換する文字列、第3引数に置換後の文字列を指定します。

置換対象が複数ある場合

第2引数に指定した文字列が、置換対象に複数含まれる場合はすべて置換されます。

Dim txt As String
txt = Replace("xxx様お世話になっております(xxx)", "xxx", "伊藤")
MsgBox txt

上記の処理を実行すると、「伊藤様お世話になっております(伊藤)」と表示されます。

対象文字列の途中から置換を行う

対象文字列の途中から置換を行う場合は、第4引数 startを指定します。

Dim txt As String
txt = Replace("xxx様お世話になっております(xxx)", "xxx", "伊藤", 5)
MsgBox txt

上記の処理を実行すると、「お世話になっております(伊藤)」と表示されます。

5番目の文字列からを置換対象とするため、最初の4文字が切り取られた形で置換をされます。

置換を何回行うかを指定する

置換する文字列が複数出現する場合に、何回置換をするかを指定することができます。指定は第5引数 count を指定します。

Dim txt As String
txt = Replace("xxx様お世話になっております(xxx/xxx)", "xxx", "伊藤", , 2)
MsgBox txt

上記の処理を実行すると、「伊藤様お世話になっております(伊藤/xxx)」と表示されます。

置換を行う回数を2回に指定しているので、3番目の「xxx」は置換されません。

置換対象の開始位置と、置換行う回数を指定する

第4引数 startと、第5引数 countを両方指定することも可能です。

Dim txt As String
txt = Replace("xxx様お世話になっております(xxx/xxx)", "xxx", "伊藤", 5, 1)
MsgBox txt

上記の処理を実行すると、「お世話になっております(伊藤/xxx)」となります。

正規表現で置換する

Replace関数は正規表現での置換することはできません

正規表現を使って文字列を置換する場合には、VBScript.RegExpオブジェクトを使います。

以下は携帯電話番号のパターンを指定して、置換するコードになります。

Dim reg As Object
Dim txt As String
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "0[789]0-[0-9]{4}-[0-9]{4}"
txt = reg.Replace("お問い合わせ先は、こちら:090-0000-0000。", "070-1234-5678")
MsgBox txt

上記の処理を実行すると、「090-0000-0000」部分が「070-1234-5678」に置き換わって、「お問い合わせ先は、こちら:070-1234-5678。」が表示されます。

Patternプロパティに置換したい正規表現を指定します。置換は、VBScript.RegExpオブジェクトのReplaceメソッドで置換対象の文字列と、置換後の文字列を指定します。

まとめ

今回は、VBAで文字列を置換する関数(Replace)についての紹介でした。

Point
  • Replace(対象文字列, 置換前文字列, 置換後文字列)で置換可能
  • 置換開始位置を指定するには、第4引数 startを設定する
  • 置換回数を指定するには、第5引数 countを設定する
  • 正規表現で置換をするには、VBScript.RegExpオブジェクトを使用する

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次