-
∨目次
- Replace メソッド
- セルを置換する
- 書式を検索条件にする
- 書式を置換する
- 指定したシートのセルを置換する
VBA セルを置換する
はじめに
Excel VBA マクロのセルを置換する方法を紹介します。
Range.Replace メソッドまたは Cells.Replace メソッドでセルの値を置換できます。
フォントなどの書式も置換や検索条件にできます。
- 文字列を置換するには「文字列を置換する」をご覧ください。
- セルを取得するには「セルや範囲を取得する」をご覧ください。
-
目次
- Replace メソッド
- セルを置換する
- 書式を検索条件にする
- 書式を置換する
- 指定したシートのセルを置換する
Replace メソッド
Replace(What, Replacement)
Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
引数「What」 | 検索する文字列やワイルドカードを指定します。 |
引数「Replacement」 | 置換する文字列を指定します。 |
引数「LookAt」 | 省略できます。完全に一致するセルを検索するか指定します。
|
引数「SearchOrder」 | 省略できます。どの方向に検索するか指定します。
|
引数「MatchCase」 | 省略できます。大文字と小文字を区別するか指定します。
|
引数「MatchByte」 | 省略できます。半角と全角を区別するか指定します。
|
引数「SearchFormat」 | 省略できます。書式を検索条件にするか指定します。
|
引数「ReplaceFormat」 | 省略できます。書式を置換するか指定します。
|
戻り値の型 | ブール型 (Boolean) |
置換するしないに関わらず True が返ります。
このメソッドは Excel の置換ダイアログと連動しています。引数を指定すると置換ダイアログのオプションが変更されます。逆に置換ダイアログでオプションを変更すると、引数の既定値がその値になります。引数を省略すると前回の値が引き継がれるため、すべての引数を指定するのをオススメします。

スポンサーリンク
セルを置換する
範囲内のセルを置換
Range の引数にセル名を指定すると、そのセルの範囲を置換できます。
セル「A1」~「A2」を置換するにはRange("A1:A2").Replaceを入力します。
Dim b As Boolean
b = Range("A1:A2").Replace("B", "_") ' B を _ に置換する
変更前 ![]() |
変更後 ![]() |
すべてのセルを置換
すべてのセルを置換するにはCells.Replaceを入力します。
Dim b As Boolean
b = Cells.Replace("B", "_") ' すべてのセルを置換する
ワイルドカード
引数「What」には、次のワイルドカードを使用できます。
パターン | 説明 | 使用例 | 一致例 |
* | 任意の長さの文字 | "あ*" | あ, あい, あいう |
? | 任意の 1 文字 | "あ?" | あい, あか, あき |
~ | ワイルドカードの文字 * ? を検索する | "あ~?~*" | あ?* |
Dim b As Boolean
b = Range("A1").Replace("A*", "_") ' A から始まる文字列を _ に置換する
数式を置換
何も特別な操作は必要ありません。そのまま数式を置換できます。
「SUM 関数」を「AVERAGE 関数」に置換するには次のようにします。
Dim b As Boolean
b = Range("A1").Replace("SUM", "AVERAGE")
' =SUM(・・・) が =AVERAGE(・・・) のようになる
書式を検索条件にする
引数「SearchFormat」に True を指定すると、Application.FindFormat プロパティと同じ書式のセルのみ置換対象にできます。
セル「A1」~「A2」の中で文字色が赤のセルを置換するには次のようにします。
' 文字色が赤を検索条件にする
Application.FindFormat.Clear ' 前回の書式をクリア
Application.FindFormat.Font.Color = RGB(255, 0, 0) ' 文字色
Dim b As Boolean
b = Range("A1:A2").Replace("B", "_", SearchFormat:=True) ' B を _ に置換する
変更前 ![]() |
変更後 ![]() |
書式を置換する
引数「ReplaceFormat」に True を指定すると、Application.ReplaceFormat プロパティで設定されている書式に変更します。
文字色を赤に変更するには次のようにします。
' 文字色が赤を検索条件にする
Application.ReplaceFormat.Clear ' 前回の書式をクリア
Application.ReplaceFormat.Font.Color = RGB(255, 0, 0) ' 文字色
Dim b As Boolean
b = Range("A1").Replace("*", "", ReplaceFormat:=True) ' 書式のみを変更する
変更前 ![]() |
変更後 ![]() |
変更される書式は ReplaceFormat に設定した書式のみです。上記のように文字色のみ設定しているときは、文字色だけが変更され、それ以外のフォントサイズなどはそのままです。
書式が変更される条件として引数「What」の文字が存在するセルが対象になります。そのためワイルドカードの*を使用して、すべてのセルが置換されるようにしています。ただし空のセルの書式は変更されません。
指定したシートのセルを置換する
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

Dim b As Boolean
' Sheet1 のセル「A1」を置換
b = Worksheets("Sheet1").Range("A1").Replace("B", "_")
b = Worksheets(1).Range("A1").Replace("B", "_")
' Sheet2 のセル「A1」を置換
b = Worksheets("Sheet2").Range("A1").Replace("B", "_")
b = Worksheets(2).Range("A1").Replace("B", "_")
Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表すMe.が省略されています。
' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"
標準モジュールに Range や Cells を入力すると、アクティブなシートのセルになります。アクティブシートを表すActiveSheet.が省略されています。
' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
スポンサーリンク