Codigo VBA para realizar búsqueda de datos de una hoja de excel en un formulario, seleccionando de un combobox?

Todo expertos, mi duda es la siguiente:

Tengo 1 hoja de excel con nombres de personas en la primera columna y en 11 columnas mas todos los datos correspondientes al nombre de la persona, he hecho una "Pagina inicio" que permite abrir un formulario en el cual quiero que dependiendo del nombre seleccionado (en un combobox) me muestre los 11 datos restantes en textboxs, he buscado el código necesario para esto y no lo encuentro, no es posible realizarlo en access ya que me lo solicitaron en excel.

2 respuestas

Respuesta
4

Pon lo siguiente en tu formulario

Private Sub ComboBox1_Change()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    f = ComboBox1.ListIndex + 2
    For i = 1 To 11
        Controls("TextBox" & i) = h1.Cells(f, i + 1)
    Next
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    ComboBox1.RowSource = h1.Name & "!A2:A" & u
End Sub

Si los textbox no los tienes consecutivos, entonces cambia el evento change por esto

Private Sub ComboBox1_Change()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    f = ComboBox1.ListIndex + 2
    TextBox1 = h1.Cells(f, "B")
    TextBox2 = h1.Cells(f, "C")
    TextBox3 = h1.Cells(f, "D")
    TextBox4 = h1.Cells(f, "E")
    TextBox5 = h1.Cells(f, "F")
    TextBox6 = h1.Cells(f, "G")
    TextBox7 = h1.Cells(f, "H")
    TextBox8 = h1.Cells(f, "I")
    TextBox9 = h1.Cells(f, "J")
    TextBox10 = h1.Cells(f, "K")
    TextBox11 = h1.Cells(f, "L")
End Sub

Te anexo mi archivo para que veas el funcionamiento.

https://www.dropbox.com/s/ubtm207mjlxsq64/combo%20y%20textobox.xlsm?dl=0 


Respuesta
2

COMBOBOX lo llamaremos combobox2, al hacerle click:

Private Sub ComboBox2_Enter()
On Error Resume Next
Application.ScreenUpdating = False
ComboBox2.Clear
Sheets(hoja_elegida).Select
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
  If InStr(datos, ActiveCell) = 0 Then
    datos = datos & "," & ActiveCell
  End If
  ActiveCell.Offset(1, 0).Select
Loop
datos = Right(datos, Len(datos) - 1)
dato_individual = Split(datos, ",")
For i = 0 To UBound(dato_individual)
ComboBox2.AddItem dato_individual(i)
Next
Application.ScreenUpdating = True
End Sub

Al elegir el dato:

Private Sub ComboBox2_Change()
On Error Resume Next
dato_elegido = ComboBox2.List(ComboBox2.ListIndex)
Cells.Find(What:=dato_elegido).Activate
textbox1.value = activecell.offset(0,1).value
textbox2.value = activecell.offset(0,2).value
textbox3.value = activecell.offset(0,3).value
textbox4.value = activecell.offset(0,4).value
End Sub

También puedes usar variables dependerá de lo que necesites.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas