2017-09-05 4 views
0

Je suis en train de créer une macro pour msgbox toutes les cellules avec remplissage rouge lors de l'ouverture d'une feuille de calcul, j'ai actuellement le ci-dessous, mais pas de msgbox?vba cellules msgbox basées sur la couleur des cellules

Sub test() 

Dim ws As Worksheet 
Set ws = Sheets("Month End Tasks") 
Dim i As Integer 
i = 1 
Do Until i = 11 
    If ws.Range("C" & i).Interior.Color = RGB(255, 0, 0) Then 
     MsgBox "C" & i & " is red!!" 
    End If 
i = i + 1 
Loop 

End Sub 

Merci,

+2

On peut supposer que les cellules ne sont pas rouges (ou du moins pas 255,0,0)? Ils ne sont pas colorés par un formatage conditionnel? – SJR

+0

Ils sont formatés conditionnellement en fonction de la date, donc tout ce qui doit être fait avant aujourd'hui est coloré en rouge, donc je le veux quand le SS est ouvert il indique à l'utilisateur tous les articles en retard comme aujourd'hui, est-ce logique? – Brentford123

+0

'Interior.Colour' ne détectera pas les couleurs CF, donc vous devrez probablement utiliser la condition que vous avez utilisée pour vérifier CF. Dans les versions récentes d'Excel, je pense que vous pouvez utiliser la propriété 'DisplayFormat'. – SJR

Répondre

2

Essayez de voir les couleurs RVB de C1 à C11, en utilisant les éléments suivants:

Sub WriteCellColor() 

    Dim ws  As Worksheet 
    Dim i  As Long 

    Set ws = ActiveSheet 

    i = 1 
    Do Until i = 11 
     Debug.Print ws.Range("C" & i).Address 
     Debug.Print getRGB2(ws.Range("C" & i).Interior.Color) 
     i = i + 1 
    Loop 

End Sub 

Public Function getRGB2(l_long) As String 

    Dim c As Long 
    Dim R As Long 
    Dim G As Long 
    Dim B As Long 

    c = l_long 
    R = c Mod 256 
    G = c \ 256 Mod 256 
    B = c \ 65536 Mod 256 
    getRGB2 = "R=" & R & ", G=" & G & ", B=" & B 

End Function 

Il imprimerait un résumé des couleurs RVB dans la fenêtre immédiate. Comme ceci:

$C$1 
R=255, G=0, B=0 
$C$2 
R=255, G=255, B=0 

Une méthode plus simple est simpy pour sélectionner la cellule avec la couleur et appuyer sur

Format Cells> Modèles> Couleurs> Personnaliser:

enter image description here

Ensuite, les valeurs RVB sont visibles.


En ce qui concerne la mise en forme conditionnelle, il est probablement le meilleur d'appliquer la même logique que dans l'état: Excel 2007 conditional formatting - how to get cell color?