Você não está contando seu shp
:
For Each shp In sh.Shapes
If shp.Type = ShapeType Then
If Shapes.Fill.ForeColor = vbGreen Then
b = a + 1
Sheet1.Cells(3, 1) = b
End If
End If
Next
Aqui:
If Shapes.Fill.ForeColor
deve ser
If shp.Fill.ForeColor
Em uma nota diferente, você pode querer considerar o uso de Select Case
para isso. Também ative o Option Explicit
para ver quais outros erros aparecem.