Когда вы сравниваете значение диапазона с числом, оно должно выглядеть так:
rng3.value < 60
Кроме того, имейте в виду, что вы не выполняете клеточные проверки для индекса цвета. Так что если одна ячейка в rng2 не имеет цветового индекса 50, но все остальные имеют, это:
rng2.Interior.ColorIndex = 50
вернет FALSE
для всего диапазона. Так что, в основном, вы делаете проверки по дальности.
Как сказал кто-то в комментариях, логика немного отсталая. Однако вот один из способов сделать это:
Sub Message_Click()
Dim sht As Worksheet
Dim RR As Long
Set sht = ThisWorkbook.Worksheets("Report")
sht.Range("F6:F37").ClearContents
For RR = 6 To 37 Step 1
If sht.Cells(RR, "D").Interior.ColorIndex = 50 Then
sht.Cells(RR, "F").Value = "Passed"
ElseIf sht.Cells(RR, "D").Interior.ColorIndex= 38 And sht.Cells(RR, "E").Value > 60 And sht.Cells(RR, "E").Value < 100 Then
sht.Cells(RR, "F").Value = "Warning"
ElseIf sht.Cells(RR, "D").Interior.ColorIndex= 38 And sht.Cells(RR, "E").Value < 60 Then
sht.Cells(RR, "F").Value = "Still has chances"
ElseIf sht.Cells(RR, "D").Interior.ColorIndex= 38 And sht.Cells(RR, "E").Value = 100 Then
sht.Cells(RR, "F").Value = "Failed"
Else
sht.Cells(RR, "F").Value = "N/A"
End If
Next RR
End Sub
Вот пример результата: