I've kind of got round it but it doesn't feel right to do it like this...
Basically, changed the name of the field to include a "%" symbol and the use instr to determine the existence of the percentage symbol.
If InStr(1, rs.Fields(y).Name, "%") > 0 Then r.NumberFormat = "0.00%"
Any better ideas?