Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Determinare quando "scatta" la formattazione condizionale

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Determinare quando "scatta" la formattazione condizionale

Postdi templare77 » 11/08/19 11:34

Salve amici,
vorrei sapere se c'è un modo per determinare se in una cella, "scatti" per così dire la formattazione condizionale impostata a priori.

Cioè se ho una semplice cella che deve diventare rossa nel momento in cui, i valori in essa contenuti siano compresi fra 10 e 20, vorrei sapere se tramite VBA posso "accorgermi", se la formattazione condizionale è stata applicata (e quindi lo sfondo diventa rosso) oppure no.
In rete ho trovato unqualcosa che però non funziona in quanto restituisce sempre Errore 2015

Codice: Seleziona tutto
Sub test()
    Debug.Print Evaluate(Foglio1.Range("A1").FormatConditions.Item(1).Formula1)
End Sub


grazie
templare77
Utente Senior
 
Post: 151
Iscritto il: 18/04/16 06:26

Sponsor
 

Re: Determinare quando "scatta" la formattazione condizional

Postdi wallace&gromit » 11/08/19 13:39

Ummh, forse sono ingenuo ma mi aspetto che se ho una formattazione condizionale che scatta sul rosso quando il valore di una cella è tra 10 e 20 e verifico che il valore della cella è effettivamente tra 10 e 20 allora sarà scattata sul rosso.
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1932
Iscritto il: 16/01/12 14:21

Re: Determinare quando "scatta" la formattazione condizional

Postdi Statix » 11/08/19 13:51

ciao a tutti , basta applicare una formattazione condizionale,
esempio di cella E5
Codice: Seleziona tutto
=SE(E($E$5>9);($E$5<21))

riempimento rosso
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1227
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Determinare quando "scatta" la formattazione condizional

Postdi Anthony47 » 11/08/19 15:04

Evaluate vuole che la formula sia in Inglese (nomi funzioni e sintassi), mentre FormatConditions.Item(1).Formula1 ti restituisce la formula in lingua locale.
E' giusta l'osservazione di W&G: se sai quali regole hai impostato, basta controllare in vba se quelle condizioni sono vere o false.

Ma, se hai XL2010 o superiore allora puoi sfruttare la proprieta' DisplayFormat, che restituisce il colore visualizzato in una cella; confrontandolo col colore di default puoi determinare se una formattazione condizionale e' in atto; es.
Codice: Seleziona tutto
Sub test()
Dim ICol1, ICol2
'
ICol1 = Foglio2.Range("A1").Interior.Color
ICol2 = Foglio2.Range("A1").DisplayFormat.Interior.Color
Debug.Print ICol1 <> ICol2
End Sub

Non puoi pero' determinare se la formattazione e' stata applicata dalla regola #1, oppure l'eventuale #2, o #3...

L'osservazione di Statix mi pare invece inutile, visto che l'utente e' partito appunto da una formattazione condizionale

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16522
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Determinare quando "scatta" la formattazione condizional

Postdi templare77 » 11/08/19 16:57

Grazie a tutti,
si il fatto di sapere i valori può aiutare ma se di valori ce ne sono una ventina? :eeh: :eeh:
Per quello chiedevo se era possibile in base al colore dello sfondo, altrimenti dovrei confrontare il valore della cella con una ventina di range di valore diversi
templare77
Utente Senior
 
Post: 151
Iscritto il: 18/04/16 06:26

Re: Determinare quando "scatta" la formattazione condizional

Postdi templare77 » 11/08/19 17:53

Ciao ANthony,
purtroppo la soluzione che mi hai suggerito funziona solo per i colori "classici". Con quelli sfumati no.
Nel frattempo ho pensato di mettere in un foglio nascosto gli stessi valori della formattazione condizionale e confrontare con dei cicli annidati i valori
templare77
Utente Senior
 
Post: 151
Iscritto il: 18/04/16 06:26

Re: Determinare quando "scatta" la formattazione condizional

Postdi Anthony47 » 12/08/19 00:52

Una cella di appoggio? Es:
Codice: Seleziona tutto
Foglio2.Range("AA1").FormulaLocal = Foglio2.Range("A1").FormatConditions.Item(1).Formula1
Debug.Print Foglio2.Range("AA1").Value


Ma .FormatConditions.Item(1).Formula1 non ti funzionera' se la regola non e' una formula
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16522
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Determinare quando "scatta" la formattazione condizional

Postdi zsadist » 14/08/19 08:18

ehmm
buongiorno :)

è da tanto che non partecipo, per problemi familiari e di lavoro
ed è da tanto che non uso excel, ci ho perso anche la mano.
come ben ricordate, sono un niubbo con difficoltà a capire le cose.
vediamo un pò..
tu dici

templare77 ha scritto:Salve amici,
vorrei sapere se c'è un modo per determinare se in una cella, "scatti" per così dire la formattazione condizionale impostata a priori.

Cioè se ho una semplice cella che deve diventare rossa nel momento in cui, i valori in essa contenuti siano compresi fra 10 e 20, vorrei sapere se tramite VBA posso "accorgermi", se la formattazione condizionale è stata applicata (e quindi lo sfondo diventa rosso) oppure no.
In rete ho trovato unqualcosa che però non funziona in quanto restituisce sempre Errore 2015

Codice: Seleziona tutto
Sub test()
    Debug.Print Evaluate(Foglio1.Range("A1").FormatConditions.Item(1).Formula1)
End Sub


grazie


ma se ho capito bene, quanto ti ha suggerito Anthony47 mi sembra corretto
Codice: Seleziona tutto
Sub test()
Dim ICol1, ICol2
'
ICol1 = Foglio2.Range("A1").Interior.Color
ICol2 = Foglio2.Range("A1").DisplayFormat.Interior.Color
Debug.Print ICol1 <> ICol2
End Sub


insomma, se tu vuoi sapere, ad esempio, se la cella 1 del foglio 1 (dico tanto per) varia di colore (non che colore abbia usato) beh..
magari inserendola nel codice del foglio, in change, ad esempio:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ICol1, ICol2
If Target.Address = "$A$1" Then
ICol1 = Foglio1.Range("A1").Interior.Color
ICol2 = Foglio1.Range("A1").DisplayFormat.Interior.Color
MsgBox ICol1 <> ICol2
End If
End Sub


ti darà falso se la variazione sulla cella A1 non ha sorbito variazioni di colore, vero se lo ha fatto.
questo partendo dai presupposti:
1) che tu abbia XL2010 o superiore
2) che non vi siano più formattazioni condizionali sulla stessa cella (nel qual caso dovresti invece risalire al colore)
3) ultima ma non meno importante, che io ci abbia capito qualcosa :D :lol:
Adattati! L'incapacità di cambiare direzione porta alla sconfitta
zsadist
Utente Junior
 
Post: 74
Iscritto il: 04/04/19 13:48

Re: Determinare quando "scatta" la formattazione condizional

Postdi Anthony47 » 14/08/19 14:36

Bentornato zsadist
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 16522
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Determinare quando "scatta" la formattazione condizional

Postdi zsadist » 14/08/19 14:47

Anthony47 ha scritto:Bentornato zsadist


ciaoo
grazie :)
ben trovato :)
Adattati! L'incapacità di cambiare direzione porta alla sconfitta
zsadist
Utente Junior
 
Post: 74
Iscritto il: 04/04/19 13:48

Re: Determinare quando "scatta" la formattazione condizional

Postdi templare77 » 29/08/19 01:36

Ciao zsadist, il fatto è che con i colori sfumati non funziona. Alla fine Anthony ho risolto con i colori piatti, in formattazione condizionale, grazie ancora del tuo prezioso aiuto!! ;) ;)
templare77
Utente Senior
 
Post: 151
Iscritto il: 18/04/16 06:26


Torna a Applicazioni Office Windows


Topic correlati a "Determinare quando "scatta" la formattazione condizionale":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti