第99回.Replaceメソッド(置換)
Replaceメソッドは、セル範囲内で条件に当てはまるセルの文字列を置換するものです。
ワークシート操作の「検索と置換」の「置換」の機能をマクロVBAで使うものです。
・Replaceメソッドは、Rangeオブジェクトのセル値の一部を置換するもの
・Replace関数は、引数の指定文字列(変数・セル値等)の一部を置換するものになります
Replaceメソッド の構文
| What | Excel で検索する文字列を指定します。 |
| Replacement | 置き換える文字列を指定します。 |
| LookAt |
xlPart:検索テキストの一部を検索します。 |
| SearchOrder | xlByColumns:列を下方向に検索してから、次の列に移動します。 xlByRows:行を横方向に検索してから、次の行に移動します。 |
| MatchCase | 大文字と小文字を区別して検索するには、True を指定します。 |
| MatchByte | この引数は、Excel で 2 バイト (全角) 文字の言語サポートが選択またはインストールされている場合にだけ使用できます。 2バイト文字が2バイト文字とだけ一致するようにする場合は、Trueを指定します。 2バイト文字が2バイト文字だけではなく、対応する1バイト文字とも一致するようにする場合はFalseを指定します。 |
| SearchFormat | メソッドの検索書式を指定します。 |
| ReplaceFormat | メソッドの置換書式を指定します。 |
つまり、[検索と置換] ダイアログ ボックスに表示される設定が変わります。
次回メソッドを呼び出したときにこれらの引数を指定しない場合は、保存されている値が使用されます。
メソッドを使用するたびに、すべての引数を明示的に指定してください。
また、このメソッドを使用してもセルの選択範囲もアクティブセルも変更されません。
Replaceメソッドの注意点
2.指定オプションがシート操作とリンクしている
3.表示形式に依存した検索のため、文字列が存在していても検索されない場合がある
VBAのFindメソッドの使い方には注意が必要です
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関数では、大文字小文字が区別されます。
以下のように、大文字小文字を区別せずに置換する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関数でも、オプション指定で対応する方法があります。
引数CompareにvbTextCompareを指定します。
Dim i As Long
For i = 1 To 100
Cells(i, 1) = Replace(Cells(i, 1), "a", "B", , ,
vbTextCompare)
Next i
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-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
