オーロラさんの勉強帳

33歳、未経験からIT業界へ。SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

VBA 再入門27 文字列系の関数 Replace (文字を置換する)

 

Replace関数について

Replaceは引数に指定した文字列に対して、引数の検索文字列を引数の置換文字列に置換する関数になります。引数に開始位置、置換回数、比較モードを指定することもできます。

 

構文

Replace(文字列,検索文字列,置換文字列)
文字列内の検索文字列を置換文字列に置換する。
※バイナリモードでの比較となります。

Replace(文字列,検索文字列,置換文字列,開始位置,置換回数,比較モード)
置換する開始位置、複数の検索文字列がある場合に置換する回数を指定できます。比較モードで大文字・小文字、全角・半角などを区別することができます。

<引数について>

f:id:auroralights:20210105232303p:plain

<比較モードについて>

f:id:auroralights:20210104235801p:plain

※比較モードにはvbUseCompareOptionというモードもありますが、省略しています。vbBinaryCompare、vbTextCompareを認識していればいいかと思います。

 

詳しくは
Replace 関数 (Visual Basic for Applications) | Microsoft Docs

Replace関数のサンプルコード

D列の「山田 花子」を「鈴木 花子」に置換するコードです。 

f:id:auroralights:20210104232115p:plain

f:id:auroralights:20210104232144p:plain

 

 Replace関数のサンプルコード2:特定の文字を削除する

検索文字を「""」に置換することで、その検索文字を削除することができます。以下のコードでは、半角スペース「" "」を[""」に置換し、削除しています。

f:id:auroralights:20210105231005p:plain

f:id:auroralights:20210105230936p:plain

 

Replace関数のサンプルコード3:vbTextCompare、vbBinaryCompare

vbBinaryCompare、vbTextCompareを指定する際は、開始位置、置換回数を指定する必要があります。省略することはできません。

 

vbTextCompare:全角半角・大文字小文字を区別しない

A1は開始位置と置換回数が指定されていないため、置換が出来ていません。(Replace("abcdef","A","B",1,1,vbTextCompare)と開始位置・置換回数を指定すると置換されます)

A2は開始位置と置換回数が指定されているため、「a」が「B」に置換しています。(置換文字列は「A」ですが、vbTextCompareのため、大文字小文字を区別せず、「a」を「B」に置換しています。)

f:id:auroralights:20210105232542p:plain

f:id:auroralights:20210105232552p:plain

 

vbBinaryCompare:全角半角、大文字小文字を区別する

A3は引数が正しくない(比較モードを指定しているが、開始位置・置換回数が指定されていない)ため、エラーとなるのでコメントアウトしています。

A4は「a」を「b」に置換しています。

A5は「A」を「B」に置換するコードですが、大文字小文字を区別するため、文字列「abcdef」では置換されずにそのままの文字列が返されています。

f:id:auroralights:20210105233059p:plain