Seleccionar el código desde un combobox y mostrar la descripción en un listbox

Tengo en una hoja de datos con los siguientes encabezados: Legajo, fecha de ingreso, apellido y nombre y antigüedad.

Los datos ocupan el siguiente rango de datos A2:D11. Lo que quiero es que al seleccionar el número de legajo en el combo me aparezca en el listbox los datos de ese operario.

2 Respuestas

Respuesta
1

[Hola

Te paso la macro

Macro para combobox1

Private Sub ComboBox1_Click()
    Set h = Sheets("Hoja1")
    ListBox1.Clear
    Set r = h.Columns("A")
    '
    Set b = r.Find(ComboBox1, LOOKAT:=xlWhole)
    If Not b Is Nothing Then
        ListBox1.AddItem h.Cells(b.Row, "B")
        ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(b.Row, "C")
        ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(b.Row, "D")
    End If
End Sub

Private Sub UserForm_Activate()
Set h = Sheets("Hoja1")
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem Cells(i, "A")
    Next i
End Sub

Respuesta
1

Este es el resultado de la macro

y esta es la macro 

Private Sub ComboBox1_Change()
Set datos = Range("datos")
indice = ComboBox1.ListIndex
If indice < 0 Then MsgBox ("no existe este legajo"), vbInformation, "AVISO"
With ListBox1
    .RowSource = datos.Rows(indice + 1).Address
    .ColumnCount = datos.Columns.Count
End With
Set datos = Nothing
End Sub
Private Sub UserForm_Initialize()
Set datos = Range("a2").CurrentRegion
With datos
    f = .Rows.Count: c = .Columns.Count
    .Sort key1:=Range(.Columns(1).Address), order1:=xlAscending, Header:=xlYes
    Set datos = .Rows(2).Resize(f - 1, c)
    ComboBox1.RowSource = .Columns(1).Address
    .Name = "datos"
End With
Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas