VBA入門
Replaceメソッド(置換)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-11-10

第99回.Replaceメソッド(置換)


Replaceメソッドは、セル範囲内で条件に当てはまるセルの文字列を置換するものです。


ReplaceメソッドはRangeオブジェクトのメソッドで、
ワークシート操作の「検索と置換」「置換」の機能をマクロVBAで使うものです。

VBA関数のReplace関数とは全く違うものになりますので使い分けが必要です。
・文字列操作に関するVBA関数の一覧 ・Replace関数 ・InStr関数 ・StrConv関数 ・最後に

・Replaceメソッドは、Rangeオブジェクトのセル値の一部を置換するもの
・Replace関数は、引数の指定文字列(変数・セル値等)の一部を置換するものになります


Replaceメソッド の構文

指定されたセル範囲内に入力されている値もしくは数式としての文字列を対象に、指定した文字列を別の文字列に置換します。

Range.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)

引数の説明
What Excel で検索する文字列を指定します。
Replacement 置き換える文字列を指定します。
LookAt

xlPart:検索テキストの一部を検索します。
xlWhole:検索テキスト全体を検索します。

SearchOrder xlByColumns:列を下方向に検索してから、次の列に移動します。
xlByRows:行を横方向に検索してから、次の行に移動します。
MatchCase 大文字と小文字を区別して検索するには、True を指定します。
MatchByte この引数は、Excel で 2 バイト (全角) 文字の言語サポートが選択またはインストールされている場合にだけ使用できます。
2バイト文字が2バイト文字とだけ一致するようにする場合は、Trueを指定します。
2バイト文字が2バイト文字だけではなく、対応する1バイト文字とも一致するようにする場合はFalseを指定します。
SearchFormat メソッドの検索書式を指定します。
ReplaceFormat メソッドの置換書式を指定します。

引数のLookAt, SearchOrder, MatchCase, MatchByteの設定は、このメソッドを使用するたびに保存されます。
つまり、[検索と置換] ダイアログ ボックスに表示される設定が変わります。
次回メソッドを呼び出したときにこれらの引数を指定しない場合は、保存されている値が使用されます。

このような設定の変更によって生じる問題を避けるには、
メソッドを使用するたびに、すべての引数を明示的に指定してください。

Replaceメソッドはブール値を返しますが、この戻り値を使う必要性はないでしょう。
また、このメソッドを使用してもセルの選択範囲もアクティブセルも変更されません。


Replaceメソッドの注意点

Replaceメソッドを使う上では注意が必要です。

1.処理速度が遅い
2.指定オプションがシート操作とリンクしている
3.表示形式に依存した検索のため、文字列が存在していても検索されない場合がある

これらReplaceメソッドの注意点については、以下で詳しく説明しています。
VBAのFindメソッドの使い方には注意が必要です
・1.処理速度が遅い ・2.指定オプションがシート操作とリンクしている ・「値」で検索した場合は、表示形式に依存した検索になる ・最後に


Replaceメソッドの使用例

Range("A1:A100").Replace What:="A", Replacement:="B", LookAt:=xlPart, MatchCase:=True

A1セル~A100セルの中の、文字"A"を"B"(大文字小文字を区別しています)に置換しています。
これは、

Dim i As Long
For i = 1 To 100
  Cells(i, 1) = Replace(Cells(i, 1), "A", "B")
Next i

このように、
Replace関数を使って書き直すことができます。
Replace関数は、指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。引数compareの指定りより、全角半角、大文字小文字の扱いが変わります。Replace関数 Replace(expression,find,replace[,start[,count[,compare]]]) …
ただし、
Replace関数では、大文字小文字が区別されます。
以下のように、大文字小文字を区別せずに置換するReplaceメソッドは、

Range("A1:A100").Replace What:="A", Replacement:="B", LookAt:=xlPart, MatchCase:=False

これをReplace関数で、
特にオプション指定(モジュールレベルのOption指定)せずに、大文字小文字の両方を置換するためには、

Dim i As Long
For i = 1 To 100
  Cells(i, 1) = Replace(Cells(i, 1), "a", "B")
  Cells(i, 1) = Replace(Cells(i, 1), "A", "B")
Next i

このように少し面倒なことをする必要があります。
しかし、Replace関数でも、オプション指定で対応する方法があります。

Replace関数で大文字小文字を区別しない場合は、
引数ComparevbTextCompareを指定します。

Dim i As Long
For i = 1 To 100
  Cells(i, 1) = Replace(Cells(i, 1), "a", "B", , , vbTextCompare)
Next i


ReplaceメソッドとReplace関数の使い分け

Replaceメソッドは実務で使われる機会は少ないように思われます。
実戦では、Replace関数を使って処理する場合の方が多くなるからです。

セル範囲の置換であれば、
For Nextでセル範囲のセル値をReplace関数で置換していく感じになります。
ただし、
セル範囲が広範囲の場合に一気に置換したい場合は、
Replaceメソッドの方が高速で処理されますので適宜使い分けてください。




同じテーマ「マクロVBA入門」の記事

第136回.フォームコントロール
第137回.ActiveXコントロール
第98回.Findメソッド(Find,FindNext,FindPrevious)
第99回.Replaceメソッド(置換)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)
第135回.ジャンプの選択オプション(SpecialCells)
第141回.行・列の表示・非表示・列幅・行高
第105回.Callステートメント
第106回.Functionプロシージャー
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)


新着記事NEW ・・・新着記事一覧を見る

カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ