Replace関数は、いろいろと応用がきく関数だ。実務上でもよく使うと思う。このページでは、Replace関数の基本的な使い方とVBAエキスパート試験のポイントをまとめた。
基本的な使い方
Replace関数は文字列を置き換える関数だ。元の文字列の中から特定の文字列を探し出し、別の文字列に変換する。
Replace(元の文字列, 検索文字列, 置換文字列)
次のプロシージャはReplace関数の使用例だ。文字列「ABCDE」の中から「B」を探し出し、「*」に変換して返す。
'Bを*に変換する
Sub Test()
Dim str As String
str = "ABCDE"
MsgBox Replace(str, "B", "*")
End Sub
↓
検索文字列や置き換え文字列は、1文字でなくてもかまわない。
'BCを12345に変換する
Sub Test()
Dim str As String
str = "ABCDE"
MsgBox Replace(str, "BC", "12345")
End Sub
↓
検索文字列が見つからなかった場合、元の文字列をそのまま返す。
'Xは見つからないのでABCDEを返す
Sub Test()
Dim str As String
str = "ABCDE"
MsgBox Replace(str, "X", "*")
End Sub
↓
引数の順番に気をつけたい。
○ Replace(元の文字列, 検索文字列, 置換文字列)
× Replace(元の文字列, 置換文字列, 検索文字列)
スペースを取り除く
Replace関数を使うと、文字列の中から余分なスペースを取り除くことができる。置換文字列に空の文字列「""」を指定するのがポイントだ。
'A B CをABCに変換する
Sub Test()
Dim str As String
str = "A B C"
MsgBox Replace(str, " ", "")
End Sub
↓
スペースを除去する関数としてTrim関数がある。しかしTrim関数は文字列の両側からスペースを取り除くだけだ。それに対して、Replace関数は文字列の中にあるスペースも除去できる。
'A B Cのまま表示される。
Sub Test()
Dim str As String
str = "A B C"
MsgBox Trim(str)
End Sub
↓
ファイルのフルパスからパス部分のみ取り出す
次の例は、応用的な使い方になる。
Replace関数は、ファイルのフルパスからパス部分を取り出すときに使える。ファイルのフルパスというのは、たとえば「D:\sample\001.csv」のように、ドライブ名からフォルダ名、ファイル名までを含んだものだ。それに対してパス部分というのは、ファイル名を除外した「D:\sample\」の部分を指す。
次のプロシージャはファイル「D:\sample\001.csv」のパス部分をメッセージボックスに表示する。
(ファイルが存在するときのみ)
Sub Test()
Dim fullPath As String
Dim buf As String
Dim ret As String
fullPath = "D:\sample\001.csv"
'文字列「001.csv」を格納
buf = Dir(fullPath)
'「D:\sample\001.csv」から「001.csv」を探し、
'空の文字列に置き換える
ret = Replace(fullPath, buf, "")
MsgBox ret
End Sub
↓
なお、Dir関数はファイル名を取得する関数だ。

補足:Replace関数の引数について
Replace関数には、省略できる引数がいくつかある。すべての引数を書くと次のようになる。
Replace(元の文字列, 検索文字列, 置換文字列, 開始位置, 置換回数, 比較方法)
※ 太字の引数は省略可能
Excel VBAのエキスパート試験の範囲には含まれていないため、これ以上の説明は省略する。最初の3つの引数を押さえておけば充分と思う。
練習問題
次のプロシージャを実行したところメッセージボックスが表示された。その表示内容として正しいものはどれか。次の中から1つ選択しなさい。
Sub Test()
MsgBox Replace("ABCABC", "B", "X")
End Sub
- True
- AXCABC
- AXCAXC
- ACAC
正解を見る
コメント