Cargar ComboBox con datos de fila y celdas de una hoja...

Como dice el título, alguien que me ayude con algún código para cargar los datos de una fila en un ComboBox. Y que no cargue 2 veces el mismo dato.

A su vez, al dar click en el dato, me rellene los TextBox con su respectiva información.

Todo esto en un UserForm. Adjunto impresión de pantalla.

1 respuesta

Respuesta
1

Esta macro descarta los números de serie repetidos al cargar los datos en el combobox, selecciona uno y te muestra la información en los textbox, checa la imagen.

Esta es la macro

Private Sub ComboBox1_Change()
Set datos = Range("datos")
serie = ComboBox1.Value
With datos
    Set busca = .Columns(1).Find(serie)
    On Error Resume Next
    celda = busca.Address
    If Err.Number > 0 Then MsgBox ("no existe este numero de serie"), vbCritical, "AVISO": limpia: GoTo salida
    On Error GoTo 0
    Set info = Range(celda).Resize(1, .Columns.Count)
    x = 2
    For Each Control In UserForm1.Controls
        tipo = UCase(TypeName(Control))
        If tipo = "TEXTBOX" Then
            With Control
                .Text = info.Cells(1, x)
                .Locked = True
            End With
            x = x + 1
        End If
    Next Control
End With
salida:
End Sub
Private Sub UserForm_Initialize()
Dim unicos As New Collection
Set datos = Range("a1").CurrentRegion
With datos
    For i = 2 To .Rows.Count - 1
        serie = .Cells(i, 1)
        On Error Resume Next
            unicos.Add serie, CStr(serie)
            If Err.Number = 0 Then ComboBox1.AddItem serie
        On Error GoTo 0
    Next i
    .Name = "datos"
End With
End Sub
Sub limpia()
For Each Control In UserForm1.Controls
        tipo = UCase(TypeName(Control))
        If tipo = "TEXTBOX" Then
            With Control
                .Text = Empty
                .Locked = True
            End With
        End If
    Next Control
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas