ExcelマクロVBA入門
第99回.Replaceメソッド(置換)

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2019-01-27

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


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


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

VBA関数のReplace関数とは全く違うものになりますので使い分けが必要です。

・Replaceメソッドは、指定範囲のセル値の一部を置換するもの
・Replace関数は、指定文字列(変数・セル値等)の一部を置換するものになります


Replaceメソッド

Replaceメソッドは、指定されたセル範囲内のセルの文字を示すブール型 (Boolean) の値を返します。
このメソッドを使用しても、選択範囲またはアクティブ セルのどちらも変更されません。

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 メソッドの置換書式を指定します。



注意.

引数 LookIn、LookAt、SearchOrder、MatchByte の設定は、このメソッドを使用するたびに保存されます。

つまり、[検索と置換] ダイアログ ボックスに表示される設定が変わります。

次にこのメソッドを使用するときにこれらの引数の指定を省略すると、保存された設定が使用されます。

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



使用例.

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関数を使って書き直すと、

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メソッドはあまり使われることがありません。
実戦では、Replace関数を使って処理する場合の方が多くなります。

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




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

グラフ(Chart)
図形(Shape)
Findメソッド(Find,FindNext,FindPrevious)
Replaceメソッド(置換)
InputBoxメソッド(インプットボックス)
Midステートメント
Intersectメソッド
Unionメソッド
GetPhoneticメソッドとSetPhoneticメソッド(フリガナ)
Callステートメント
Functionプロシージャー

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

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

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

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • Replaceメソッド(置換)

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


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






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

    本文下部へ