In agreement eith Toddleson, you could have something like
In a normal module
Public arrPaint(4) As Excel.Range
Public intCounter As Integer
Public Function StartUp()
Set arrPaint(0) = Range("a1")
Set arrPaint(1) = Range("b2")
Set arrPaint(2) = Range("c3")
Set arrPaint(3) = Range("d4")
Set arrPaint(4) = Range("e5")
intCounter = 0
Application.OnTime Now + TimeValue("00:00:1"), "Tick"
End Function
Public Function Tick()
Dim tmNextRun As Date
tmNextRun = Now + TimeValue("00:00:01")
If intCounter < 5 Then
If intCounter > 0 Then arrPaint(intCounter - 1).Interior.Color = xlNone
arrPaint(intCounter).Interior.Color = vbRed
intCounter = intCounter + 1
Application.OnTime tmNextRun, "Tick"
Else
arrPaint(intCounter - 1).Interior.Color = xlNone
End If
End Function
and then deal with the user hits in the worksheet events, like so.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If intCounter < 5 Then
If Not Intersect(Target, arrPaint(IIf(intCounter > 0, intCounter - 1, 0))) Is Nothing Then
Range("q1").Value = "HIT"
Else
Range("q1").Value = Target.Address
End If
End If
End Sub
A button calls start up and populates the cell ranges. This can still be random, i did this for ease.
Hope this helps as a building block for you.
Thanks