VBA開発

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

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

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

メソッド説明

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

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

引数の一覧は以下です。

引数定数説明必須項目
What検索するデータを指定必須
Replacement置換するデータを指定必須
LookAtxlPart一部が一致するセルを検索
(部分一致)
xlWhole全部が一致するセルを検索
(完全一致)
SearchOrdexlByRows検索方向を列で指定
(横方向に検索)
xlByColumns検索方向を行で指定
(縦方向に検索)
MatchCaseTrue大文字と小文字を区別
False区別しない(デフォルト設定)
MatchByteTrue半角と全角を区別する
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関数】

コメント

タイトルとURLをコピーしました