Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Formattare cella in base a valore

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

Formattare cella in base a valore

Postdi S+E » 29/09/16 09:44

Se ne è parlato in altre occasioni.

Foglio di lavoro Excel 2010.

So che potrei usare la formattazione condizionale, ma il lavoro sarebbe oltremodo laborioso.

Vorrei scrivere un codice che evidenzi una cella, bordandola di rosso scuro, al realizzarsi di una condizione.

In parole brevi:
in colonna A, da A3 ad A46 ho una serie di nomi.
In A1 ho una formula che propone un numero casuale tra 1 e 44
Quello che vorrei realizzare è che, quando ho A1=1, si bordi di rosso scuro la cella A3, con A1=2 si bordi di rosso scuro la cella A4, e così via...

Usando VBA è più semplice che dare la formattazione condizionale utilizzando una formula?
Da dove posso iniziare?

Grazie,
Stefano
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Sponsor
 

Re: Formattare cella in base a valore

Postdi alfrimpa » 29/09/16 11:07

Ciao Stefano

Prova con questa macro da inserire nel modulo del foglio1; in A1 ci deve essere la formula

Codice: Seleziona tutto
=CASUALE.TRA(1;44)


Questa è la macro che probabilmente si può anche sfoltire.

Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
Range("a3:a50").Borders(xlDiagonalDown).LineStyle = xlNone
    Range("a3:a50").Borders(xlDiagonalUp).LineStyle = xlNone
    Range("a3:a50").Borders(xlEdgeLeft).LineStyle = xlNone
    Range("a3:a50").Borders(xlEdgeTop).LineStyle = xlNone
    Range("a3:a50").Borders(xlEdgeBottom).LineStyle = xlNone
    Range("a3:a50").Borders(xlEdgeRight).LineStyle = xlNone
    Range("a3:a50").Borders(xlInsideVertical).LineStyle = xlNone
    Range("a3:a50").Borders(xlInsideHorizontal).LineStyle = xlNone
 Range("a" & Range("a1").Value + 2).Borders(xlDiagonalDown).LineStyle = xlNone
    Range("a" & Range("a1").Value + 2).Borders(xlDiagonalUp).LineStyle = xlNone
    With Range("a" & Range("a1").Value + 2).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("a" & Range("a1").Value + 2).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("a" & Range("a1").Value + 2).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("a" & Range("a1").Value + 2).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 3
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    Range("a" & Range("a1").Value + 2).Borders(xlInsideVertical).LineStyle = xlNone
    Range("a" & Range("a1").Value + 2).Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub


In pratica ogni volta che il foglio viene ricalcolato il valore di A1 cambia e viene applicato il bordo alla cella corrispondente.

Tieni però presente che ogni volta (anche quando inserisci il dato in altre celle) viene scatenato l'evento Calculate per cui cambia il valore in A1 e di conseguenza viene lanciata la macro.

Fa sapere se era questo che volevi o a specificare meglio qual è la tua esigenza.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 840
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Formattare cella in base a valore

Postdi S+E » 29/09/16 12:03

Perfetto Alfredo.
Era proprio ciò che volevo realizzare.

Grazie mille.

Ora mi studi le varie istruzioni, in modo da poterlo applicare anche ad altre colonne.

Grazie ancora.
S+E
Win7 + Office 2010 Ita
S+E
Utente Junior
 
Post: 10
Iscritto il: 26/04/16 09:27

Re: Formattare cella in base a valore

Postdi Anthony47 » 30/09/16 00:34

Con la formattazione condizionale:
-selezione A3:A46
-imposti una formattazione usando la formula =$A$1=RIF.RIGA(A1)
-imposti il formato che vuoi

That's all

Di piu' semplice conosco solo format c: :D

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: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Formattare cella in base a valore":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti