Hi again Bob61,
Yes, I would use the same approach for as few as 9 instances. If the number was 900 a totally different approach would be called for. Even with 9 it is a toss up whether to code it using a loop, but I think just repeating the code 9 times is just as easy. Here's how I would handle it:
Just for example, let the 9 cells be B2, B4, B6, F2, F4, F6, J2, J4, J6.
1. Name your picture icons "Green1", "Yellow1", "Red1", "Green2", "Yellow2", "Red2", etc., where the number suffixes refer to each of the 9 cells.
2. Modify the code as follows.
Private Sub Worksheet_Calculate()
HideSignals
Select Case [b2]
Case 1: Shapes("Green1").Visible = msoTrue
Case 2: Shapes("Yellow1").Visible = msoTrue
Case 3: Shapes("Red1").Visible = msoTrue
End Select
Select Case [b4]
Case 1: Shapes("Green2").Visible = msoTrue
Case 2: Shapes("Yellow2").Visible = msoTrue
Case 3: Shapes("Red2").Visible = msoTrue
End Select
'etc. for all 9 cells
End Sub
Sub HideSignals()
Dim i As Integer
For i = 1 to 9
Shapes("Green" & i).Visible = msoFalse
Shapes("Yellow" & i).Visible = msoFalse
Shapes("Red" & i).Visible = msoFalse
Next i
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target,[B2,B4,B6,F2,F4,F6,J2,J4,J6]) Is Nothing Then
'this does not calculate the worksheet. It just calls the Calculate event.
Worksheet_Calculate
End If
End Sub
_________________________________
Excellerate!
Damon