formattazione condizionale da VBA
Hai un problema con Excel?
formattazione condizionale da VBA
di Piero (utente non iscritto) data: 22/08/2014 17:01:00
Qualcuno sa dirmi come riuscire ad accedere da codice VBA al tipo di colore di una cella, generato da formattazione condizionale? Normalmente il colore di sfondo di una cella è gestibile mediante il seguente codice:
cella.Interior.ColorIndex
tuttavia questo codice non vale per catturare il colore modificato da una formattazione condizionale imposta alla cella. Dovrei sviluppare una macro che mi somma i valori contenuti nelle celle di un intervallo che hanno lo stesso colore applicato da una formattazione condizionale. Spero di essermi spiegato bene.
di isy data: 22/08/2014 20:40:32
Ciao,
sicuro che non puoi operare direttamente sui dati presenti nelle celle...
Ecco un codice di esempio.
Adatta il range del codice, questo esempio conta le celle formattate col colore rosso.
Option Explicit
Sub FormatCondi()
Dim FC As FormatCondition, F1, F2
Dim Num As Long, Cella As Range
For Each Cella In [C5:E20]
For Each FC In Cella.FormatConditions
If FC.Type = xlCellValue Then
F1 = Evaluate(FC.Formula1)
Select Case FC.Operator
Case xlBetween: If Cella >= F1 And Cella <= Evaluate(FC.Formula2) Then Exit For
Case xlEqual: If Cella = F1 Then Exit For
Case xlGreater: If Cella > F1 Then Exit For
Case xlGreaterEqual: If Cella >= F1 Then Exit For
Case xlLess: If Cella < F1 Then Exit For
Case xlLessEqual: If Cella <= F1 Then Exit For
Case xlNotBetween: If Cella < F1 _
Or Cella > Evaluate(FC.Formula2) Then Exit For
Case xlNotEqual: If Cella <> F1 Then Exit For
End Select
Else
If Evaluate(FC.Formula1) Then Exit For
End If
Next FC
If Not FC Is Nothing Then
If FC.Interior.ColorIndex = 3 Then Num = Num + 1 'Conta solo se trova il colore Rosso
End If
Next
Range("C1") = Num
MsgBox Num
End Sub
|
DisplayFormat.Interior.Color
di Luca73 data: 25/08/2014 12:29:10
Ciao
se vuoi "catturare" il colore reale della cella in esame devi usare RangeinEsame.DisplayFormat.Interior.Color
oppure RangeinEsame.DisplayFormat.Interior.ColorIndex. Questo comando nel caso di formattazione condizionale ti mostra la " parte interna dell'oggetto Range associato, come visualizzato nell'interfaccia utente corrente. Proprietà di sola lettura."
Vuoi Approfondire?