Condividi:        

Formattazione Condizionale con VBA Excel 2003

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

Formattazione Condizionale con VBA Excel 2003

Postdi MarcoT » 23/07/14 09:40

Buongiorno a tutti,
malgrado abbia visto alcuni topic sull'argomento non sono riuscito a trovare la soluzione giusta per me.
Ecco il problema:
In un foglio excel ho i dati disposti in questo modo:

1 A1 A2 A3 A4 A5 A6 A7 A8
2 numero verbale | Numero check | aperta | In lavorazione | alla firma | da consegnare | consegnata | archiviata |
3 numero | numero | | | | X | | |
4 numero | numero | | | | | X | |
5 numero | numero | | | | | | X |
...

Vorrei che i valori delle prime 2 colonne cambiassero formattazione a seconda della posizione delle "X" nelle 6 colonne successive, senza dover lanciare macro, ma "in tempo reale" tramite codice VBA (senza premere pulsanti dopo ogni modifica intendo, non so se mi sono spiegato). :)

Questa Operazione dovrebbe essere fatta oltre che per le colonne da A1 a A8 anche per un secondo intervallo da A11 ad A18.

Qualcuno può darmi una mano?

Grazie mille in anticipo!
Ciao
Marco
Windows XP _ Office 2003
MarcoT
Newbie
 
Post: 1
Iscritto il: 23/07/14 09:22

Sponsor
 

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Flash30005 » 23/07/14 23:03

Ciao MarcoT e benvenuto nel Forum

Non è molto chiaro perché mi sembra che per spiegare meglio la struttura dei dati tu vada a complicare cose che sono più semplici:
Excel ha dei riferimenti ben precisi
colonne con le lettere (A, B, C, D etc)
e le righe contrassegnate da numeri (1, 2, 3, 4 etc)
quando dici A1, A2, A3 sembrerebbe che indichi colonna A riga 1 con A1, colonna A riga 2 con A2 etc
mentre, suppongo che intendevi dire colonna A, B, C, D etc
Ti consiglio di inviare il file come esempio utilizzando la questa procedura

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Anthony47 » 23/07/14 23:53

Ho interpretato le indicazioni date da MarcoT come suppone Flash, e suggerisco di usare una macro di WorksheetChange che lavori sull' area in cui si scrivono le X; tipo:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CheckA As String, ColA As String, TCol
CheckA = "C2:H8"    '<<< L'area con le X
ColA = "A2:B8"      '<<< L' area da colorare
If Not Application.Intersect(Target, Range(CheckA)) Is Nothing Then
    Range(ColA).Interior.ColorIndex = xlNone
    TCol = Application.Match("x", Cells(Target.Row, 1).Resize(1, 10), 0)
    If Not IsError(TCol) Then Cells(Target.Row, 1).Resize(1, 2).Interior.ColorIndex = TCol
End If
End Sub
(va inserita nel "Modulo di codice" del Foglio che ospita i tuoi dati)

Pero' secondo me il tuo formato dati e' da modulo cartaceo... In excel io avrei usato una sola cella (colonna C) per inserire lo stato di avanzamento della pratica; al limite, per una visualizzazione in stile "avanzamento", nelle celle adiacenti (D:I) tramite formula visualizzerei una X sulla colonna appropriata.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Omocaig » 17/06/15 12:38

Ciao a tutti, ho sentito dire che la formattazione condizionale delle versioni nuove di Excel permetta di default di colorare una cella X se la cella X' viene compilata, mentre per farlo su excel 2003 c'è bisogno di creare una macro.

Non ho capito se la macro postata sopra porta alla colorazione di celle di un dato intervallo quando le celle di un altro intervallo ( di uguali dimensioni ) vengono compilate con delle X.

Ho copiato la macro pari pari riadattando l'intervallo ad un nuovo foglio ma non funziona. Anche se sono due settimane che ho capito cosa sia una macro ( sono un chimico ), magari riesco a correggere il problema da solo ( very orgogliosamente )

Codice: Seleziona tutto
If Not Application.Intersect(Target, Range(CheckA)) Is Nothing Then
    Range(ColA).Interior.ColorIndex = xlNone
    TCol = Application.Match("x", Cells(Target.Row, 1).Resize(1, 10), 0)
    If Not IsError(TCol) Then Cells(Target.Row, 1).Resize(1, 2).Interior.ColorIndex = TCol


La seguente parte di codice non mi è chiara, a cosa serve TCol ?

Buona Giornata !!!
Xp + Office 2016 Ita
Omocaig
Utente Junior
 
Post: 93
Iscritto il: 11/05/15 15:08

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Omocaig » 17/06/15 13:57

Nel senso, è una variabile a cui assegno un controllo oppure un controllo in se ?
Xp + Office 2016 Ita
Omocaig
Utente Junior
 
Post: 93
Iscritto il: 11/05/15 15:08

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Anthony47 » 18/06/15 21:31

La formattazione condizionale nelle "nuove" versioni e' alquanto cambiata rispetto al 2003, comunque sia le vecchie che le nuove consentono di impostare Formatta quando /Il valore della cella e' /Uguale a /Valore; per far riferimento al valore di un' altra cella devi usare una formula.
Cio' detto (quindi), se il tuo problema e' di formattare un'area mettendo le X in'area gemella allora non ti serve nessuna macro ma basta impostare una formattazione condizionale con Formula. Se indichi quali sono le aree (e ci ricordi quale versione tu usi) potremo scendere nei dettagli.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Omocaig » 19/06/15 12:01

Ciao, dunque, area Gemella (L14:P10000), area da colorare (B14:B10000).

Se invece volessi, oltre a colorare l'area B14:B10000, compilare con la data odierna la colonna Q14, cosa ne pensi di una formula del tipo: =INDICE({Come matrice dovrei inserirci i numeri che voglio che mi restituisca ma vorrei che mi restituisse il Valore della Data di oggi };CONFRONTA(L14:P14;{X};1)). ??

Grazie !

EDIT Flash: eliminato post identico
Xp + Office 2016 Ita
Omocaig
Utente Junior
 
Post: 93
Iscritto il: 11/05/15 15:08

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Anthony47 » 20/06/15 01:52

(L14:P10000) e (B14:B10000) non son aree gemelle; supponiamo che volessi scrivere B14:F10000.
Allora
-selezioni l' area B14:F10000
-imposti una formattazione condizionale con la clausola "La formula è"
-come formula scrivi
Codice: Seleziona tutto
=L14="X"

-imposti il formato preferito

Se vuoi mettere una data fissa in una cella allora non devi farlo con formula, che "oggi" ti restituisce 20-giu-2015, ma domani restituira' 21-giu-2015. Penso potrebbe tornarti utile quanto suggerito a erika_i in questa discussione: viewtopic.php?f=26&t=104771#p611425

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Omocaig » 22/06/15 13:53

Ok, perfetto, in pratica non avevo capito come funzionava la formattazione condizionata e ti ho anche fatto perdere tempo avendo esposto male il problema.
Il mio problema ( a cui hai già risposto in questo articolo viewtopic.php?p=330483 ) era come utilizzare più di tre criteri per una sola cella.

Credo che inserendo una cella in Q14 che si compila con una X quando una o più delle celle L14 M14 N14 O14 P14 vengono compilate anch'esse con una X, risolva il problema.

Perchè ciò avvenga devo usare la formula

Codice: Seleziona tutto
 =SE(L14:P14="X";"X";"")


Oppure un'altra ? Perchè a rigore di logica il test L14:P14="X" dovrebbe indicare " nell'intervallo è presente una X " ma non mi consegna nessun risultato.

Saluti a tutti
Xp + Office 2016 Ita
Omocaig
Utente Junior
 
Post: 93
Iscritto il: 11/05/15 15:08

Re: Formattazione Condizionale con VBA Excel 2003

Postdi Omocaig » 23/06/15 16:29

Ciao, volevo ringraziarti, ho risolto il problema, mi stavo incasinando.
In poche parole, mi è bastato inserire dei valori numerici nelle celle al posto delle X e sommarli.

A quel punto ho utilizzato la formattazione condizionale con la formula Q14>0 ed ho copiato la cella formattata su tutta la colonna B.

Ti ringrazio molto !
Xp + Office 2016 Ita
Omocaig
Utente Junior
 
Post: 93
Iscritto il: 11/05/15 15:08


Torna a Applicazioni Office Windows


Topic correlati a "Formattazione Condizionale con VBA Excel 2003":


Chi c’è in linea

Visitano il forum: Nessuno e 100 ospiti