I think you only need one macro
Code:
Sub ColorDropDown()
Dim sText As String, oFld As FormField
With ActiveDocument
If .ProtectionType <> wdNoProtection Then .Unprotect Password:=""
For Each oFld In .FormFields
Select Case oFld.Result
Case "G"
oFld.Range.Font.Color = wdColorBrightGreen
oFld.Range.Shading.BackgroundPatternColor = wdColorBrightGreen
Case "Y"
oFld.Range.Font.Color = wdColorYellow
oFld.Range.Shading.BackgroundPatternColor = wdColorYellow
Case "R"
oFld.Range.Font.Color = wdColorRed
oFld.Range.Shading.BackgroundPatternColor = wdColorRed
End Select
Next oFld
.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=""
End With
End Sub
If your document has other formfields in it then you might need the code to restrict itself to a defined range (bookmarked) or something similar but you don't need to know every named formfield.