Código VBA para TextBox con más de 10 campos en un UserForm

Para este caso utilizo un CommandButton que me vincula con un UserForm el cual contiene 26 TextBox, la idea es que los 26 campos de fila seleccionada en el listBox pasen a los TextBox, modificar alguno si es el caso y nuevamente pegar la información en una tabla de excel

El código que anexo a continuación funcionó a la perfección en otro caso en donde solo trabajaba con 8 columnas.

Me gustaría que me ayudaran revisando los códigos que anexo y me regalen los ajustes correspondientes.

'Traer el UserForm con los 26 TextBox para modificar los datos

Private Sub CommandButton6_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "Inspecciones"
Else
UserForm2.Show
End If
End Sub

'Trae los datos de la fila seleccionada en el ListBox

Private Sub UserForm_Click()
For i = 1 To 8
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

'Pega los datos de los TextBox en la tabla de excel
Private Sub CommandButton1_Click()
For i = 1 To 8
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
ActiveCell.Offset(0, 2).Value = Format(TextBox3, "mm/dd/yyyy")
Next i
Unload Me
End Sub

1 Respuesta

Respuesta
2

Así quedaría en tu formulario2

Private Sub CommandButton1_Click()
    For i = 1 To 26
        ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
        ActiveCell.Offset(0, 2).Value = Format(TextBox3, "mm/dd/yyyy")
    Next i
    Unload Me
End Sub
Private Sub UserForm_Click()
    For i = 1 To 26
        Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
    Next i
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Hola

Gracias por tu respuesta y soporte.

He probado el código pero me aparece el siguiente error a la hora de ejecutarlo:

´-214702809 (80070057)´ en tiempo de ejecución.

No se encuentra el objeto especificado.

Al depurar el error el código siguiente se coloca en amarillo

Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value

También es importante contarte que cuando en el código anterior trabajo con "TextBox1" y hasta nueve columnas puedo visualizar en el UserForm los datos de esas nueve columnas, pero en desorden con respecto al orden en que están en la tabla de Excel. En las fotos anexas se puede observar lo que sucede.

Agradezco su ayuda.

Tú comentario es que tienes 26 textbox, yo supongo que tienes los 26 textbox desde el textbox1 al textbox26, si no tienes alguno de los textbox por eso te envía el error, debes revisar que tienes los 26 textbox numerados del 1 al 26 de forma consecutiva.

Además debes ordenar los textbox para que correspondan a cada columna, es decir, el textbox1 a la columna A, el 2 a la B, el 3 a la C y así hasta el textbox26.

Si no tienes los 26 textbox de forma consecutiva y tampoco corresponden a la columna, entonces tendrás que cambiar la forma de cargar los datos a los textbox.

Por ejemplo, tendrás que decirle qué columna va en cada textbox

Private Sub UserForm_Click()
    f = ActiveCell.Row
    textbox1 = Cells(f, "A")
    TextBox2 = Cells(f, "D")
    textbox3 = Cells(f, "G")
    '...
    textbox26 = Cells(f, "M")
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas