In this article, we will use workbook event to highlight dates greater than the present date.
Raw data for this example consists of daily sales target and target achieved.

We want to highlight days which are greater than the present date.

Logic explanation
In this article we have created two macros, “SetColor” and “ResetColor”.
“SetColor” macro is used to highlight dates which are greater than the present date.
“ResetColor” macro is used to reset formatting of specified source.
We have used two workbook events, workbook open event and workbook before close event.
Workbook open event is fired when workbook is opened. On opening the workbook, it will automatically run the “SetColor” macro.
Workbook before close event is used to reset event associated with the workbook open event.
Code explanation
If IsDate(ActiveCell.Value) And ActiveCell.Value > Date Then
The above code is used to check whether value in the cell is of date data type and is greater than the present date.
ActiveCell.Interior.Color = RGB(0, 255, 0)
The above code is used to assign green color to the active cell.
Set Source = Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell))
The above code is used to select all the data within the excel sheet.
Please follow below for the code
Option Explicit
Sub SetColor()
If IsDate(ActiveCell.Value) And ActiveCell.Value > Date Then
ActiveCell.Interior.Color = RGB(0, 255, 0)
Else
ActiveCell.Interior.Color = RGB(221, 235, 247)
End If
End Sub
Sub ResetColor()
'Declaring variables
Dim Rng, Source As Range
Dim IntRow As Integer, IntCol As Integer
'Specifying all the cells as source range
Set Source = Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell))
'Looping through all the cells
For Each Rng In Source
'Checking whether cell contains a value
If Not IsEmpty(Rng) Then
'Checking whether cell contain value of date data type
If IsDate(Rng.Value) Then
Rng.Select
'Assigning Green color if value is greater than today date
If DateValue(Rng.Value) > Date Then
ActiveCell.Interior.Color = RGB(0, 255, 0)
Else
ActiveCell.Interior.Color = RGB(221, 235, 247)
End If
End If
End If
Next Rng
End Sub
'Insert below code in ThisWorkbook module
Option Explicit
Private Sub Workbook_Open()
With Worksheets("Main")
'Event fired on entry to worksheet
.OnEntry = "SetColor"
'Event fired on sheet activation
.OnSheetActivate = "ResetColor"
End With
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Worksheets("Main")
.OnEntry = ""
.OnSheetActivate = ""
End With
End Sub
If you liked this blog, share it with your friends on Facebook. Also, you can follow us on Twitter and Facebook.
We would love to hear from you, do let us know how we can improve our work and make it better for you. Write to us at info@exceltip.com
The applications/code on this site are distributed as is and without warranties or liability. In no event shall the owner of the copyrights, or the authors of the applications/code be liable for any loss of profit, any problems or any damage resulting from the use or evaluation of the applications/code.