We'll start with the color first. The color variable is a Long (as opposed to Integer) type with values between 0 and 16,777,216. 0 is black and 16,777,216 is white. The numbers in between are the rest of the colors.
This Long number can be generated by the RGB function if you know how much red, green, and blue you want to have for a color. You send to the RGB function a red value, a blue value, and a green value, all of these between 0 and 255. In the end, however, you end up with a Long value calculated from the individual components.
Apart from syntax errors in your code, it IS perfectly fine to set the colors to 2, 3, or 4; however, you would never tell the difference between these BLACK shades by eye. (0 is all black, and 2-4 are so very close when compared with the entire range up to 16,777,216).
The trick is to get the number of the color you want. This code below will print in the Immediate Window of the VB editor the interior color number of the active cell. Take any cell in the worksheet and manually change its color to the one you want. Then, put this code into a module, make sure the Immediate Window is showing (Ctrl + G, or View->Immediate Window), make sure the active cell in the spreadsheet is the one with the color, and run it. The Immediate Window will show the current color both as a Long and as an RGB conversion. You can then use either one to set the color in your code. Run this for each different color you want: since you have Ok and Wait, you might want 2 colors while the rest are white.
VBA Code:
Sub PrintRGBFromLong()
Dim longColor As Long
Dim rgb As String
longColor = ActiveCell.Interior.color
rgb = "RGB("
'get R
rgb = rgb & CStr(longColor Mod 256) & ", "
'get G
rgb = rgb & CStr((longColor \ 256) Mod 256) & ", "
'get B
rgb = rgb & CStr((longColor \ 65536) Mod 256) & ")"
Debug.Print "Interior color as long: " & longColor
Debug.Print "Interior color as RBG: " & rgb
End Sub
Once you have the number values of the colors you want, you can put them into the code for the Ok and Wait colors in the "color" procedure:
VBA Code:
Sub color()
Dim OkColor As Long
Dim WaitColor As Long
Dim NoColor As Long
OkColor = ??
WaitColor = ??
NoColor = 16777215 'Color for white
'or NoColor = rgb(255, 255, 255)
For Each cell In Sheets("All products").Range("O3:O500")
If cell.Value = "Ok" Then
cell.Interior.color = OkColor
ElseIf cell.Value = "Wait" Then
cell.Interior.color = WaitColor
Else
cell.Interior.color = NoColor
End If
Next
End Sub