First, my method will not work if you are displaying your form in datasheet view. The only way you can change the forecolor in datasheet view is as USCitizen suggested (Conditional Formatting (which you can also do programmatically (sort of))). If you are only going to display the form in Form View, then my method will work.
Second, I would not use the % symbol as part of a field name. Access uses it as one of its wildcards. What you're doing may not pose a problem, but I would avoid it.
Third, I'm a little confused as to what you're doing. If I understand you correctly, you have 30 fields (one of which is name "CH4 (%)"

. And each field needs to be checked to determine if it is out side the valid range. And, if so, then set it to red, else some other color. If my understanding is correct, then you will have to enter 30 If-Then-Else statements to check all of the fields. And, if this is true, I would consider renaming my fields so that I could do it in a loop or use Conditional Formatting.
If you choose to rename, you don't have to rename the fields within the table, just their control names on the form. For example, if you include table field CH4 (%) on your form, then name it something like txtField1 (note that the control source of txtField1 would be CH4 (%)). Then the next control would be txtField2, and so on. Your loop would look something like this:
For i = 1 to 30
If (Me("txtField" & i) > whatever) Then
Me("txtField" & i).ForeColor = 255 'Red
Else
Me("txtField" & i).ForeColor = 0 'Black
End If
Next i