Assuming that you're talking about Userform controls, this seems to work. If not, then attach a small example
Only real thing I can see that you did not 'dot' the 'Controls(...) to the Userform
Option Explicit
Sub drv1()
Dim i As Long
Dim s As String
Load UserForm1
With UserForm1
For i = 0 To .Controls.Count - 1
s = "o_" & (i + 1)
.Controls(s).BackStyle = fmBackStyleOpaque
.Controls(s).BackColor = RGB(0, 255, 0)
Next i
'alternate - close to yours
i = 2
.Controls("o_" & i).BackColor = RGB(255, 0, 0)
.Show
End With
End Sub