A esta clase de problema, le veo tres soluciones. Una, que ya estabas haciendo, y en la cual no veo cual es la complicación (si defines el tipo de dato correcto, tal ves parezca más claro):
Código:
Private Sub Command1_Click()
Dim iCtrl As Control
Dim ctrlTxtBox As TextBox
'Iteramos en todos los controles del form
For Each iCtrl In Form1.Controls
'Si el control es un TextBox
If TypeOf iCtrl Is TextBox Then
'Lo asignamos a una variable TextBox
'Esto hace que el código sea más claro
'(al menos para mí)
Set ctrlTxtBox = iCtrl
'Ya tienes una referencia al control.
'Si el name cumple con las condiciones que defines,
'lo usas entonces:
If Left$(ctrlTxtBox.Name, 1) = "F" Then
Debug.Print "Name: " & ctrlTxtBox.Name & " " & "Text: " & ctrlTxtBox.Text
End If
End If
Next iCtrl
End Sub
Tambien, puedes usar un array de TextBox, así accederías a las propiedades y métodos del control mediante un índice. Esta es la solución típica en VisualBasic...
O bien, puedes usar un objeto ScriptControl. Si has usado JavaScript o VBScript, habras usado la función Eval(), que dependiendo del string que le pasas como parámetro puede retornar como resultado un objeto, el resultado de una operación, una referencia a una función, el valor de una variable, etc...
Dices que tienes controles TextBox cuyo nombre es f1, f2, f3 ... fn y quieres obtener una referencia al control a partir de un string con el nombre del control segun entiendo. Entonces:
Agrega una referencia a "Microsoft Script Control 1.0", debe de estar en tu sistema, y si no, es descargable y gratuito desde el sitio de Microsoft en
Script Control.
Código:
Private Sub Command1_Click()
Dim SC As New ScriptControl 'Un nuevo objeto Script
Dim i As Long
SC.Language = "VBScript" '¿Que lenguaje usará?
'¿Sobre que objetos puede operar?
'En este caso "Frm" es un alias para Form1 dentro del
'control Script
SC.AddObject "Frm", Form1
For i = 1 To 4 '¿Cuántos de TextBox tienes?
Debug.Print "Name: " & SC.Eval("Frm.f" & i & ".Name") & " " & _
"Text: " & SC.Eval("Frm.f" & i & ".Text") 'El objeto que nos interesa
Next i
End Sub
Yo lo uso más para evaluar expresiones matemáticas, pero también sirve para este caso.
Saludos.