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

VBA 文字列を置換する

はじめに

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

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

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

  • 目次
    • 置換する
    • 位置を指定する
    • 回数を指定する
    • 大文字と小文字を区別して置換する

置換する

Replace 関数」を使用して、文字列を置換できます。詳しくは関数のページをご覧ください。ここではこの関数の使用例を紹介します。

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


Dim s As String
s = Replace("123456789", "456", "あ") ' 456 を あ に置換する
Debug.Print (s) ' 123あ789

置換文字を空文字""にすると削除できます。


Dim s As String
s = Replace("123456789", "456", "") ' 456 を削除する
Debug.Print (s) ' 123789

エクセルの置換機能を使用して、セルの値を直接置換できます。

位置を指定する

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


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

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


Dim 前の文字 As String
前の文字 = Left("001122", 3)    ' 001、前の文字を取得する
Debug.Print (前の文字 & 置換後) ' 001522、前の文字と置換後の文字を結合する

回数を指定する

第 5 引数で、置換する回数を指定できます。すべて置換するには -1 を指定します。


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

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

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

第 6 引数で、「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別するか指定できます。


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
  • 目次
    • 置換する
    • 位置を指定する
    • 回数を指定する
    • 大文字と小文字を区別して置換する