web-dev-qa-db-fra.com

Renvoyer la couleur d'arrière-plan de la cellule sélectionnée

J'ai une feuille de calcul dans laquelle les cellules sont colorées de manière significative.

Un corps sait-il comment je peux renvoyer la valeur de couleur d'arrière-plan d'une cellule actuelle dans une feuille Excel?

23
whiz

Vous pouvez utiliser Cell.Interior.Color, Je l'ai utilisé pour compter le nombre de cellules dans une plage qui ont une couleur d'arrière-plan donnée (c'est-à-dire correspondant à ma légende).

25
Garry Shutler

Si vous regardez un tableau, un tableau croisé dynamique ou quelque chose avec une mise en forme conditionnelle, vous pouvez essayer:

ActiveCell.DisplayFormat.Interior.Color

Cela semble également très bien fonctionner sur les cellules régulières.

14
RPh_Coder

Vous pouvez peut-être utiliser ces propriétés:

ActiveCell.Interior.ColorIndex - one of 56 preset colors

et

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

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

Le code ci-dessous donne le [~ # ~] hex [~ # ~] et [~ # ~] rgb [~ # ~] valeur de la plage, qu'elle soit formatée en utilisant une mise en forme conditionnelle ou autre. Si la plage n'est pas formatée à l'aide de la mise en forme conditionnelle et que vous avez l'intention d'utiliser la fonction iColor dans Excel comme UDF. Ça ne marchera pas. Lisez l'extrait ci-dessous de MSDN .

Notez que la propriété DisplayFormat ne fonctionne pas dans les fonctions définies par l'utilisateur. Par exemple, dans une fonction de feuille de calcul qui renvoie la couleur intérieure d'une cellule, si vous utilisez une ligne similaire à:

Range.DisplayFormat.Interior.ColorIndex

alors la fonction de feuille de calcul s'exécute pour retourner un #VALUE! erreur. Si vous ne trouvez pas la couleur de la plage au format conditionnel, je vous encourage à utiliser plutôt

Range.Interior.ColorIndex

car alors la fonction peut également être utilisée comme UDF dans Excel. Tels que 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