サイトについて      連絡先   検索

VBA 文字列の置換

はじめに

Excel VBA の 文字列 (String) を置換する方法を紹介します。

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

置換する回数や位置などを指定できます。

文字列の置換

Replace 関数」の引数には (文字列, 検索文字, 置換文字) を渡します。


Dim s As String
s = Replace("123456789", "456", "あ")
Debug.Print (s) ' "123あ789"

置換する位置を指定

Replace 関数」の第四引数で、置換を開始する位置を指定できます。最初の位置は 1 からスタートします。置換開始位置の前の文字は削除されます。


Dim 置換後 As String
置換後 = Replace("001122", "1", "5", 4) ' 4 文字目から置換する
Debug.Print (置換後) ' 522

置換位置より前の文字を削除したくないときは「Left 関数」を使います。


Dim 前の文字 As String
前の文字 = Left("001122", 3)    ' 001
Debug.Print (前の文字 & 置換後) ' 001522

置換する回数を指定

Replace 関数」の第五引数で、置換する回数を指定できます。すべて置換するには -1 を指定します。


Dim 置換後 As String
置換後 = Replace("00000", "0", "1", 1, 2) ' 2 回置換する
Debug.Print (置換後) ' 11000

置換後 = Replace("00000", "0", "1", 1, -1) ' すべて置換する
Debug.Print (置換後) ' 11111

大文字と小文字を区別して置換する

「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別するには最後の引数を指定します。


Dim s As String
s = Replace("abcABC", "abc", "123", 1, -1, vbBinaryCompare) ' 区別する
Debug.Print (s) ' "123ABC"

s = Replace("abcABC", "abc", "123", 1, -1, vbTextCompare) ' 区別しない
Debug.Print (s) ' "123123"

関連ページ