指定色を探してセルを選択

先日職場で、こんな相談を受けた。

特定の色のセルを選択したいのだけど、どうすれば良い?

そこで今回、まずこんなものを考えてみた。
f:id:Infoment:20200419223529p:plain

例えば ↓ こんな感じで、黄色と赤で塗り潰されたセルがある。
f:id:Infoment:20200419223913p:plain

このうち、黄色のセルだけを選択してみよう。

Sub Hoge()
    
    ' 行番号のループ変数。
    Dim r As Long
    ' 列番号のループ変数。
    Dim c As Long
    
    ' シート内の使用範囲全てを、今回の処理対象とする。
        With ActiveSheet.UsedRange
        
        ' 各セルの色情報を格納するための配列。
            Dim arr() As Variant
                arr = .Value
                For r = 1 To .Rows.Count
                    For c = 1 To .Columns.Count
                        arr(r, c) = .Cells(r, c).Interior.Color
                    Next
                Next
            
            ' 黄色のセルだけ選択。
            Dim myRng As Range
                For r = 1 To .Rows.Count
                    For c = 1 To .Columns.Count
                        If arr(r, c) = vbYellow Then
                            If myRng Is Nothing Then
                                Set myRng = .Cells(r, c)
                            Else
                                Set myRng = Union(myRng, Cells(r, c))
                            End If
                        End If
                    Next
                Next
        End With
        
        myRng.Select
    
End Sub

 
結果このように、黄色のセルだけ選択することが出来た。

f:id:Infoment:20200419224022p:plain

今回なぜわざわざ、色情報の配列を作成したか。それは、ここから機能拡張すると、面白そうだったから。

という訳で次回に続きます。

参考まで。