Condividi tramite

Cambiare colore in base alla data

Anonimo
2011-12-16T07:33:50+00:00

Buon giorno,

in rete ho trovato questa macro che cambia il colore delle scritte delle date ossia:

  • diventano rosse tutte le date antecedenti ad oggi (compreso oggi)
  • diventano blu tutte le date successive ad oggi.

Mi chiedevo se era possibile modificarla per arrivare a questo:

  • lasciare in blu le date successive ad oggi
  • far diventare verdi le date dell'ultima settimana o dell'ultimo mese
  • in rosso tutte quelle prima.

Sub ColoraCelle()

Cells.Font.ColorIndex = 0 'si impostano tutte le celle senza colore

Dim cell As Range

Set zona = ActiveSheet.Range("H2:H200") 'impostazione della variabile zona come Range

For Each cell In zona 'per ogni cella in zona

If IsDate(cell) Then ' si controlla se il valore di una cella è una data, se è una data, allora:

If cell.Value > Date Then  'se il valore della cella è maggiore rispetto alla data odierna

cell.Font.ColorIndex = 5 'si colora il testo in blu

Else 'altrimenti, cioè se la data è antecedente a quella odierna

cell.Font.ColorIndex = 3 'si colora il testo in rosso

End If

End If

Next cell

End Sub

Grazie dell'aiuto

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2011-12-16T09:47:24+00:00

Grazie mille Mauro

OTTIMO come sempre

Alè, siamo all'ottimo...;-)

Grazie per il risconto e, come sempre, buon lavoro.

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2011-12-16T09:01:10+00:00

Buon giorno,

in rete ho trovato questa macro che cambia il colore delle scritte delle date ossia:

Grazie dell'aiuto

Una macro, eh? Mah...

Comunque eccola qui:

Public Sub mColoraCelle()

    Dim sh As Worksheet

    Dim c As Range

    Dim rng As Range

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("H2:H200")

        rng.Font.ColorIndex = xlAutomatic

        For Each c In rng

            If Len(c.Value) = 10 And InStr(c.Value, "/") And IsDate(c.Value) Then

                Select Case DateDiff("d", Date, c.Value)

                    Case -7 To 0

                        c.Font.ColorIndex = 4

                    Case Is > 0

                        c.Font.ColorIndex = 5

                    Case Else

                        c.Font.ColorIndex = 3

                End Select

            End If

        Next

    End With

    Set c = Nothing

    Set rng = Nothing

    Set sh = Nothing

End Sub

Non sono sicurissimo del colore verde(la tonalità), fai delle prove.

Se vuoi modoficare il lasso di tempo in cui colorare di verde le celle(nell'esempio 8 giorni), modifica qui:

Case -7 To 0

mettendo sempre lo 0 (o il numero più alto) a destra.

Puoi fare prove con questa semplice routine per vedere il numero che viene restituito(modifica a piacimento la data di UnaData):

Public Sub m()

    Dim UnaData As Date

    UnaData = "15/12/2011"

    MsgBox DateDiff("d", Date, UnaData)

End Sub

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2011-12-16T09:41:34+00:00

    Grazie mille Mauro

    OTTIMO come sempre

    La risposta è stata utile?

    0 commenti Nessun commento