Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Fabio,
Norman scusami, usando il file ho notato che in caso inserisca per errore una data in una determinata cella (che automaticamente seguirà le regole assegnate, colorandosi in base alla scadenza) e successivamente cancellando il contenuto cella eliminandone la data (inserendo ad esempio "-") , la stessa mantiene il colore di riempimento assegnato in automatico (es: rosso / giallo).
Non è possibile fare in modo che automaticamente, quando cancello la data in una cella, torna il riempimento bianco con scritte nere?
Credo sia questo il caso interessato dalla regola:
Case Else
.Interior.Color = xlNone
.Font.ColorIndex = xlAutomatic
Affrontando entrambe le considerazioni da te sollevate, sostituisci il codice precedente con la versione seguente:
'========>>
Option Explicit
'-------->>
Private Sub Worksheet_Calculate()
Dim Rng As Range, Rng2 As Range, rCell As Range
On Error Resume Next
Set Rng = Me.UsedRange.SpecialCells(xlCellTypeConstants) ', 1)
On Error GoTo 0
If Not Rng Is Nothing Then
For Each rCell In Rng.Cells
With rCell
If IsDate(rCell.Value) Then
If .Interior.Color = RGB(255, 235, 156) Or .Interior.Color = RGB(255, 199, 206) Or .Interior.ColorIndex = xlNone Then
Select Case True
Case .Value >= Date - 15 And .Value <= Date
.Interior.Color = RGB(255, 235, 156)
.Font.Color = vbRed
Case .Value < Date - 15
.Interior.Color = RGB(255, 199, 206)
.Font.Color = vbRed
Case Else
.Interior.Color = xlNone
.Font.ColorIndex = xlAutomatic
End Select
End If
ElseIf .Interior.Color = RGB(255, 235, 156) Or .Interior.Color = RGB(255, 199, 206) Then
.Interior.Color = xlNone
.Font.ColorIndex = xlAutomatic
End If
End With
Next rCell
End If
On Error Resume Next
Set Rng2 = Me.UsedRange.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not Rng2 Is Nothing Then
For Each rCell In Rng2.Cells
With rCell
If .Interior.Color = RGB(255, 235, 156) Or .Interior.Color = RGB(255, 199, 206) Then
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
End If
End With
Next rCell
End If
End Sub
'<<========
Le modifiche al mio codice sono evidenziate in verde.
In questo modo, tutti i valori di data verranno riempiti con il colore appropriato e qualsiasi data eliminata o sostituita con qualsiasi testo avrà il colore di riempimento rimosso e il colore del carattere ripristinato al nero.
Puoi scaricare iol mio file di prova Fabio20221102.xlsm
===
Regards,
Norman