Cargar varias cajas de texto desde una tabla con vba excel

Necesito cargar un total de 12 TextBox directamente desde la hoja de excel, pero no sé como hacer. Se trata de buscar un dato en la columna "A" y que me complete el resto de datos de la misma fila. He intentado con offset, pero no sé como arrancar.

1 respuesta

Respuesta
1

Las cajas o "textbox", ¿están en la hoja o un formulario de usuario "userform"?

¿Alguna de esas cajas tiene el dato para buscar en la columna A?

¿Los textbox van del textbox1 al textbox12?

¿Qué columna va en cuál textbox?

¿Cómo se llama la hoja de excel?

Lo mejor manera para buscar un dato es con el método .Find y de ahí podemos saber la fila y con el número de fila llenar las cajas. Pero necesito que me digas los datos anteriores.

Hola y gracias por responder.

Las cajas están en un formulario y ninguna de ellas busca en la col A. Las cajas están por defecto, TextBox1, TextBox2 y así hasta el 12.                        Me gustaría que cargue en orden TextBox1=Col A ,  TextBox2=Col B y así con el resto. La hoja se llama "Control"

Prueba lo siguiente

Private Sub CommandButton1_Click()
  If TextBox1.Value = "" Then
    MsgBox "Captura un valor en la caja 1"
    TextBox1.SetFocus
    Exit Sub
  End If
  '
  Dim lr As Long, i As Long
  With Sheets("Control")
    lr = .Range("A" & Rows.Count).End(3)(2).Row
    For i = 1 To 10
      .Cells(lr, i).Value = Controls("TextBox" & i)
    Next
  End With
End Sub

No me funciona Dante.  He puesto el código en un botón, pongo un dato en el TextBox1 de la columna A y pulso el botón, pero no me carga el resto de cajas con los datos de la fila B,C,D,E,F,G etc. 

¿El botón está en el userform?

¿Todos los textbox están en el userform?

¿Todos los textbox tienen datos?

Los textbox se llaman "TextBox1", "TextBox2", ... "TextBox12"

Revisa en la columna A que no hay celdas con espacios en blanco. Selecciona la última celda de la columna A. Presiona la tecla "Fin" y después presiona la tecla fecha hacia arriba. Dime en cuál celda se detuvo el cursor.

Cambia en la macro esta línea a 12 para llegar hasta el textbox12

For i = 1 To 12

Si Dante, todos los controles están en el formulario, también el botón, pero no sé si me has entendido bien lo que quiero. Necesito que se carguen las cajas con los datos de la fila. Tu macro lo que hace es registrar en la última celda vacía de la hoja. He probado llenando todas las cajas y registra bien, pero no es lo que quiero. Saludos Dante

Perdona, es mi culpa, entendí al revés.

Entonces vamos a pasar los datos de la hoja a los textbox.

Busco el dato del textbox1 en la columna A y si lo encuentro entonces cargo los textbox.

Prueba lo siguiente:

Private Sub CommandButton1_Click()
  If TextBox1.Value = "" Then
    MsgBox "Captura un valor en la caja 1"
    TextBox1.SetFocus
    Exit Sub
  End If
  '
  Dim f As Range, i As Long
  With Sheets("Control")
    Set f = .Range("A:A").Find(TextBox1.Value, , xlValues, xlWhole)
    If Not f Is Nothing Then
      For i = 2 To 12
        Controls("TextBox" & i) = .Cells(f.Row, i).Value
      Next
    Else
      MsgBox "El dato no existe"
    End If
  End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas