こんばんは「ai」です。
背景色が同じ色のセルだけを選択状態にします。
実行すると選択した範囲内でアクティブセルと背景色が同じセルのみ選択状態が残ります。
基準色となるアクティブセルとは、フォーカスがあたっているセルのことです。
1つの選択範囲を指定した場合は始点としたセル、連続しない複数範囲の選択をした場合は最後に選択した範囲の始点のセルとなります。
また、比較する色は表示色なので条件付き書式で設定された背景色も選択対象です。
アクティブセルの背景色と同じセルだけ選択状態にする
Public Sub Color_Select()
Dim Target_Sheet As Worksheet
Dim Select_Cell As Range
Dim Target As Range
'描画などを無効化
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
'処理対象を記憶
Set Target_Sheet = ActiveWorkbook.ActiveSheet
'処理対象シートをアクティブにする
Target_Sheet.Activate
'アクティブセルの背景色を取得
Select_Color = ActiveCell.DisplayFormat.Interior.Color
'選択したセル内をループ
For Each Select_Cell In Selection
'セルの背景色(表示色)がアクティブセルと同じなら選択候補に加える
If Select_Cell.DisplayFormat.Interior.Color = Select_Color Then
If Target Is Nothing Then
'1個目の格納
Set Target = Select_Cell
Else
'2個目以降の格納
Set Target = Union(Target, Select_Cell)
End If
End If
Next Select_Cell
'対象シートをアクティブにする(念のため)
Target_Sheet.Activate
'選択候補があれば選択する
If Not Target Is Nothing Then
Target.Select
End If
'描画などの無効化を解除
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
説明
「アクティブセルの背景色を取得」の部分で、最終的に選択するセルの色を取得しています。
ここで取得するのはディスプレイに表示されている色「DisplayFormat」を指定しているので、条件付き書式で見た目が変更されたセルの色も対象になります。
「選択したセル内をループ」の部分で、取得した基準となる色が選択範囲にあるかセルを一つ一つ確認していきます。
そして基準色と同じ背景色のセルがあった場合、変数「Target」に選択するセルとして取得します。
選択対象が複数になる場合は、複数のセルを併せて参照するためにUnionをつかって格納しています。
すべてのセルを確認し終わったら、最後に「選択候補があれば選択する」の部分で、変数「Target」に取得したセルをすべて選択して処理完了となります。
使い方
ソースコードを保存したファイルとは異なるブックに対して使うことを想定しています。
使い方は以下の流れになります。
- このソースコードを保存したファイルを開く
- 操作したいブックを開き、選択したい背景色のセルがアクティブになるように処理したい範囲を選択状態にする
- 操作したいブックが最前面にある状態でメニューバーから[開発]-[マクロ]を選択するか Alt + F8 キー
- 展開したマクロのダイアログで「Color_Select」を選択して[実行]ボタンを押下
アクティブセルの操作になりますので、ソースコードの記載されたブックではなく、操作したいブックからコードを実行する必要があります。
選択範囲については、連続しない複数の範囲選択でも動作可能です。