[VBA] 文字列を検索して別の文字列に置き換えます

 今回は 指定した文字列を検索して別の文字列に置き換えてしまう 方法を解説します。それには Replace 関数を使うのですけど、この関数は使い方に気をつけないと大変なことになってしまいます。

文字列を検索して別の文字列に置き換えます

 Replace 関数は次のような形で引数を指定することになっています。

=Replace(文字列,検索文字列, 置換文字列 [,開始位置 [,置換数 [,比較モード]]])

 [ ] の中は省略できる引数ですが、これを全部省略すると指定した [文字列] の中にある [検索文字列] を全て [置換文字列] に変えます。例を見てみましょう。

 'AをBに置き換えます

 Sub ChangeAB()

 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "AAAAA"
 mystr2 = Replace(mystr1, "A", "B")

 Debug.Print mystr2

 End Sub

 このマクロを実行すると「AAAAA」という文字列が全て「BBBBB」に変わります。少し細かいことを言うと、文字列の先頭から A という文字を検索して、順に B という文字列に置き換えているのです。今度は開始位置も指定するマクロを書いてみます。

 '3 文字目から X を Y に置き換えます

 Sub ChangeXY1()

 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "XXXXX"
 mystr2 = Replace(mystr1, "X", "Y", 3)

 Debug.Print mystr2

 End Sub

 コードを見ると、なんとなく「XXXXX」を「XXYYY」に変えるような気がするでしょ? 常識的に考えるとそうですよね。でも違うのね~。このマクロを実行すると先頭の 2 文字は消えてしまって「YYY」という文字列が表示されてしまうのね~。こばとも最初にこの関数を使ったときは勘違いしちゃって、「ひゃああ。勝手に文字を消さないでくださいな~!」と一羽で大騒ぎしましたよ。だからこの Replace 関数の機能を正確に表現すると「指定した文字列を指定の位置から検索して別の文字列に置き換えて、指定位置以降の文字列を取り出す」関数です。ややこしい表現だから無理に覚えることないけどね。次は4つめの引数である [置換数] も指定してみましょ~。

 '3 文字目から 2 文字の X を Y に置き換えます

 Sub ChangeXY2()

 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "XXXXX"
 mystr2 = Replace(mystr1, "X", "Y", 2, 3)

 Debug.Print mystr2

 End Sub

 このマクロを実行すると、やっぱり先頭の文字は消えてしまって「YYYX」と表示されます。あと、5つめの引数の [比較モード] はややこしくて滅多に使わないし、別の記事で解説するので、あまり気にしないでくださいな。
 

Replace 関数でスペースを消します

 Replace 関数を使って文字列内の全てのスペースを消すことができますよ。" " を "" に置き換えればいいのです。

 'スペースを消します

 Sub DeleteStringSpace()

 Dim mystr1 As String
 Dim mystr2 As String

 mystr1 = "A BC D E"
 mystr2 = Replace(mystr1, " ", "")

 Debug.Print mystr2

 End Sub

 このマクロを実行すると「A BC D E」という文字列の中にあるスペースを全部消して「ABCDE」と表示します。

 ≫ メニューに戻って他の記事も読んでくれると嬉しいな~♪

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)