Ok, no módulo do Workbook:
Private Sub Workbook_Open()
usarTimer = True
MudaCorGuia
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
usarTimer = False
MudaCorGuia
usarTimer = True
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
usarTimer = False
MudaCorGuia
usarTimer = True
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
usarTimer = False
MudaCorGuia
usarTimer = True
End Sub
Num módulo comum:
Public usarTimer As Boolean
Sub MudaCorGuia()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.ListObjects.Count >= 1 Then
If Application.CountIf(ws.ListObjects(1).ListColumns(1).DataBodyRange, Date) >= 1 Then
ws.Tab.Color = vbRed
Else
ws.Tab.ColorIndex = xlNone
End If
End If
Next ws
If usarTimer Then Application.OnTime Now + TimeValue("00:15:00"), "MudaCorGuia"
End Sub
...percebi que quando insiro nova aba a mudança de cor só funciona até a terceira aba.
O código leva em conta todas as abas da planilha (For Each ws In ThisWorkbook.Worksheets) onde tem pelo menos uma tabela (If ws.ListObjects.Count >= 1), pois de acordo com seu 1º Post
existe uma tabela em cada uma das três guias, em cuja coluna A constam algumas datas
Se ao invés de tabela vc for usar intervalo normal, aí o código teria que ser alterado. O amigo Wagner considerou intervalo, portanto poderia usar tranquilamente o código que ele escreveu ao invés deste.
Obs.: no código acima, a atualização ocorrerá à cada 15 minutos.
Postado : 27/07/2020 4:06 pm