関数・メソッド

セル範囲の中から指定文字を置換する【Replaceメソッド】【VBA入門】

Replaceメソッドは指定した範囲で当てはまる文字列置換(Replace)します。
Replace関数と、今回ご説明するReplaceメソッドは別物です。

違い
Replace関数
  →指定した文字列の中から、文字列を置き換える(置換する)
Replaceメソッド→指定したセル範囲の中から、文字列を置き換える(置換する)

メソッド説明

Replaceメソッドの構文は以下のように記載します。

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

引数の一覧は以下です。

引数 定数 説明 必須項目
What 検索するデータを指定 必須
Replacement 置換するデータを指定 必須
LookAt xlPart 一部が一致するセルを検索
(部分一致)
xlWhole 全部が一致するセルを検索
(完全一致)
SearchOrde xlByRows 検索方向を列で指定
(横方向に検索)
xlByColumns 検索方向を行で指定
(縦方向に検索)
MatchCase True 大文字と小文字を区別
False 区別しない(デフォルト設定)
MatchByte True 半角と全角を区別する
False 区別しない(デフォルト設定)
SearchFormat 検索書式を指定
ReplaceFormat 置換書式を指定

注意点

  • 引数Whatにはワイルドカードを使って指定できます。
  • 一度に複数条件の置換はできません。Replaceメソッドを複数回行う必要があります。

使い方サンプル

Public Sub Call_Sample_Replace()
    '■検索範囲を設定
    Dim rng As Range
    
    Set rng = Range("A1:A20")
    
    '■置換処理(完全一致) rngに「Jan」が完全一致で存在すれば「1月」に置換します
    rng.Replace "Jan", "1月", LookAt:=xlWhole
    
    '■置換処理(部分一致) rngに「Feb」が部分一致で存在すれば「2月」に置換します
    rng.Replace "Feb", "2月", LookAt:=xlPart

    '■置換が出来れば戻り値はTrue できなければFalse
    Dim chk As Boolean
    
    chk = Range("A1:A20").Replace("Feb", "2月", LookAt:=xlWhole)

    '■もちろん検索文字、置換文字を変数に入れる事も可能
    Dim Keyword As String
    Dim Repword As String
    
    Keyword = "2020*"   'ワイルドカード(*)を使用 「2020」から始まる文言は全て
    Repword = "令和2年" '令和2年に変更してしまう
    
    Range("A1:A10").Replace Keyword, Repword, LookAt:=xlPart

※単純に西暦、和暦を変更するなら以下記事も参考にどうぞ。
西暦→和暦変換-和暦→西暦変換【エクセルマクロ】【DATEVALUE関数】

コメント