To deal with any number of colours, adjust the first line:
Private Sub btnMyButton_Click()
myColours = Array(vbYellow, vbRed, vbBlue, vbGreen, vbMagenta, 16737894, vbCyan) 'adjust this line to suit, this is an example.
'myColours = Array(vbYellow, vbRed, vbBlue) 'adjust this line to suit, this is the original request.
With frmMyForm
x = Application.Match(.BackColor, myColours, 0) 'is the current colour in the list? and if so, where?…
If IsError(x) Then 'no it isn't:
.BackColor = myColours(0) 'first colour in the list if it's not one of the existing colours.
Else 'yes it is:
.BackColor = myColours(x Mod (UBound(myColours) + 1)) 'the next colour in the list.
End If
End With
End Sub