¿Cómo hacer un loop con varios textbox?

Hola, me gustaría saber si hay alguna forma de hacer un loop con varios textbox. El código que tengo es el siguiente:

If Hoja21.TextBox9.Value = "Red" Then
Hoja21.TextBox9.BackColor = RGB(192, 0, 0)
ElseIf Hoja21.TextBox9.Value = "Yellow" Then
Hoja21.TextBox9.BackColor = RGB(255, 192, 0)
ElseIf Hoja21.TextBox9.Value = "Green" Then
Hoja21.TextBox9.BackColor = RGB(79, 98, 40)
Else
Hoja21.TextBox9.BackColor = RGB(255, 255, 255)
End If

y se repite para varios texbox... Exite algo parecido a TextBox(i) para hacer un looping??? Y así no tener que escribir el mismo código 10 veces...??

Muchas gracias!

1 Respuesta

Respuesta
1

Sería algo así:

 Private Sub CommandButton1_Click()
'cambia el color del textbox según la palabra que tenga
'Por.Dam
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "TextBox" Then
        Select Case ctrl.Value
            Case "red"
                ctrl.BackColor = RGB(192, 0, 0)
            Case "yellow"
                ctrl.BackColor = RGB(255, 192, 0)
            Case "green"
                ctrl.BackColor = RGB(79, 98, 40)
            Case Else
                ctrl.BackColor = RGB(255, 255, 255)
        End Select
    End If
Next
End Sub

El ciclo lo hace para todos los textbox que tengas en tu formulario y les cambia el color de acuerdo a la palabra que tengan escrita, y solamente tendrás un código, no tienes que repetirlo por cada textbox que tengas.

Saludos. Dam
Si es lo que necesitas.

Hola, gracias por tu respuesta pero no me reconoce la palabra clave Me. Me da un error de compilación. ¿qué he de hacer? si sólo quiero que se ejecute para unos determinados textbox con una condición Else if basta¿?

Gracias de nuevo

¿Pusiste el código dentro del userform? Si pusiste el código en un módulo no te va a funcionar, tiene que ser dentro del user form, dale doble click a tu userform y ahí pega la macro.

Si quieres que se ejecute solamente para algunos textbox, por ejemplo (tienes 10 textbox), y solamente quieres para el 1, 3 y 5, pon lo siguiente:

Private Sub CommandButton1_Click()
'cambia el color del textbox según la palabra que tenga
'Por.Dam
For Each ctrl In Me.Controls
    If TypeName(ctrl) = "TextBox" Then
        Select Case ctrl.Name
            Case "TextBox1", "TextBox3", "TextBox5"
                Select Case ctrl.Value
                    Case "red"
                        ctrl.BackColor = RGB(192, 0, 0)
                    Case "yellow"
                        ctrl.BackColor = RGB(255, 192, 0)
                    Case "green"
                        ctrl.BackColor = RGB(79, 98, 40)
                    Case Else
                        ctrl.BackColor = RGB(255, 255, 255)
                End Select
        End Select
    End If
Next
End Sub

Ya lo probé y funciona bien.

Hola, el problema es que los textbox los tengo fuera del userform, los tengo en la parte superior de la hoja a modo de resumen, hay alguna forma de llamar a los textbox que no pertenezcan a un userform?

Muchas gracias por tu respuesta, sin embargo no era lo que buscaba exactamente, sin embargo considero muy útil el código que me has mostrado (para el caso de usar userforms). Para los que tengan este problema que busquen la pregunta ¿Cómo hacer un loop (bucle) con varios textbox que no pertenecen a ningún formulario de control?

De nuevo muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas