【VBA】条件付き書式を使用して、値が重複しているセルの背景色を変更する

例えば以下の表の
 ・列「ID(=2列目)」の
 ・値が重複しているセル
の…

列「ID(=2列目)」が重複している行が3行ある
列「ID(=2列目)」が重複している行が3行ある


背景色を変更できます!

重複している行のセル背景色を変更した
重複している行のセル背景色を変更した


条件付き書式で実現できます!

ループ処理で
 ・各セルの値を確認するといったやり方
不要です!

PR

VBAコード

例えば
 ・シート「sample」上に、以下の表のようにB列「ID(=2列目)」が重複している
場合に、

実行前
実行前

重複行の背景色を変更するために、以下のコードを実行します。

Option Explicit

Sub sample()
    
    Dim ws As Worksheet
    Dim startRange As Range
    Dim endRow As Double
    Dim endRange As Range
    
    '対象シートを取得
    Set ws = Worksheets("sample")

    '開始セルを取得
    Set startRange = ws.Range("B3")
    '最終行を取得
    endRow = startRange.End(xlDown).Row
    '最終セルを取得
    Set endRange = ws.Cells(endRow, startRange.Column)
    
    '現在設定されている条件付き書式をクリア
    ws.Range(startRange, endRange).FormatConditions.Delete

    '条件付き書式を利用して、値が重複しているセルの背景色を変更
    With ws.Range(startRange, endRange).FormatConditions.AddUniqueValues
        '対象を「重複する値」にする
        .DupeUnique = xlDuplicate
        '背景色を薄いピンクにする
        .Interior.Color = XlRgbColor.rgbLightPink
    End With
    
End Sub

念のために対象範囲に設定されている条件付き書式をクリアしています(21行目)。

「Range(“XXX”).FormatConditions.AddUniqueValues」によって、「UniqueValuesオブジェクト」を取得します(24行目)。

「UniqueValuesオブジェクト」の「DupeUnique」プロパティに「xlDuplicate」を指定することで、値が重複しているセルへ各種操作ができます(26行目)。
※上記では背景色を変更しています。

PR

実行結果

値が重複しているセルの背景色を変更できました。

実行結果
実行結果
PR

参考①

値が重複しているセルの背景色を変更(=重複の有無の確認)は、手動でもできます。

詳細は以下の記事をご確認ください。

PR

参考②

重複行を削除することもできます。

詳細は以下の記事をご確認ください。

PR

参考③

条件付き書式の設定を解除することもできます。

詳細は以下の記事の
 ・備考(全ての条件付き書式をクリア)
をご確認ください。

PR

参考④

上記のVBAコードでは、色の指定に列挙体「XlRgbColor」を使用しています。

列挙体「XlRgbColor」の詳細は、以下の記事をご確認ください。

PR

参考⑤

列挙体そのものについては、以下の記事をご確認ください。

PR

参考⑥

上記のVBAコードで使用した「UniqueValuesオブジェクト」の詳細は、公式サイトをご確認ください。