web-dev-qa-db-ja.com

選択したセルの背景色を返します

セルに意味のある色が付けられたスプレッドシートがあります。

Excelシートの現在のセルの背景色の値を返す方法を知っている人はいますか?

23
whiz

Cell.Interior.Colorを使用できます。特定の背景色(つまり、凡例と一致する)を持つ範囲内のセルの数をカウントするために使用しました。

25
Garry Shutler

テーブル、ピボットテーブル、または条件付き書式設定のあるものを見ている場合は、次のことを試すことができます。

ActiveCell.DisplayFormat.Interior.Color

これは通常のセルでも問題なく動作するようです。

14
RPh_Coder

このプロパティを使用できます:

ActiveCell.Interior.ColorIndex - one of 56 preset colors

そして

ActiveCell.Interior.Color - RGB color, used like that:

ActiveCell.Interior.Color = RGB(255,255,255)
7
Anton

以下のコードは[〜#〜] hex [〜#〜]および[〜#〜] rgb [〜#〜]範囲の値が条件付き書式を使用してフォーマットされているかどうか。条件付き書式を使用して範囲が書式設定されておらず、ExcelでiColor関数をUDFとして使用する場合。動作しません。 [〜#〜] msdn [〜#〜] からの抜粋をお読みください。

DisplayFormatプロパティは、ユーザー定義関数では機能しないことに注意してください。たとえば、次のような行を使用すると、セルの内部色を返すワークシート関数で:

Range.DisplayFormat.Interior.ColorIndex

次にワークシート関数が実行され、#VALUE! 条件付きでフォーマットされた範囲の色が見つからない場合は、むしろ使用することをお勧めします

Range.Interior.ColorIndex

そのため、関数はExcelでUDFとして使用することもできます。 iColor(B1、 "HEX")など

Public Function iColor(rng As Range, Optional formatType As String) As Variant
'formatType: Hex for #RRGGBB, RGB for (R, G, B) and IDX for VBA Color Index
    Dim colorVal As Variant
    colorVal = rng.DisplayFormat.Interior.Color
    Select Case UCase(formatType)
        Case "HEX"
            iColor = "#" & Format(Hex(colorVal Mod 256),"00") & _
                           Format(Hex((colorVal \ 256) Mod 256),"00") & _
                           Format(Hex((colorVal \ 65536)),"00")
        Case "RGB"
            iColor = Format((colorVal Mod 256),"00") & ", " & _
                     Format(((colorVal \ 256) Mod 256),"00") & ", " & _
                     Format((colorVal \ 65536),"00")
        Case "IDX"
            iColor = rng.Interior.ColorIndex
        Case Else
            iColor = colorVal
    End Select
End Function

'Example use of the iColor function
Sub Get_Color_Format()
    Dim rng As Range

    For Each rng In Selection.Cells
        rng.Offset(0, 1).Value = iColor(rng, "HEX")
        rng.Offset(0, 2).Value = iColor(rng, "RGB")
    Next
End Sub
1
jainashish