Replace関数のポイント

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関数はファイル名を取得する関数だ。

Dir関数のポイント
このページでは、Dir関数の基本的な使い方とVBAエキスパート試験のポイントをまとめた。 基本的な使い方 Dir関数は、ファイルの存在を調べることが...

補足:Replace関数の引数について

Replace関数には、省略できる引数がいくつかある。すべての引数を書くと次のようになる。

【書式】
Replace(元の文字列, 検索文字列, 置換文字列, 開始位置, 置換回数, 比較方法)

※ 太字の引数は省略可能

Excel VBAのエキスパート試験の範囲には含まれていないため、これ以上の説明は省略する。最初の3つの引数を押さえておけば充分と思う。

練習問題

次のプロシージャを実行したところメッセージボックスが表示された。その表示内容として正しいものはどれか。次の中から1つ選択しなさい。

Sub Test()
    MsgBox Replace("ABCABC", "B", "X")
End Sub

  1. True
  2. AXCABC
  3. AXCAXC
  4. ACAC

正解を見る

3

コメント