Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/09/2004, 11:14
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 23 años, 2 meses
Puntos: 7
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.