ComboBox vba Excel para captar 2 columnas

Dante, aquí nuevamente inventando, jejej

Un combo que tenga 2 columnas.

La propiedad columncount la tengo en 2, el espacio de columna están definidos solo que esto no me da.

    If CheckBox2 Then
        ComboBox1.Enabled = True
'carga nuevamente el combo por los registros nuevos
        ComboBox1.Clear
        For i = 11 To Range("B" & Rows.Count).End(xlUp).Row
            ComboBox1.AddItem Cells(i, "c") 'original (i, "D") '1ª columna
            ComboBox1.AddItem Cells(i, 4) '2ª columna
        Next

Con esto así me muestra los datos de la c y la b en la misma 1ª columna y la 2ª sin nada

en el Initialize esta

'Cargar combo
    ComboBox1.Enabled = False
    ComboBox1.Clear
    For Each celda In Range("c11:c" & Range("B" & Rows.Count).End(xlUp).Row) 'original("D11:D"
        If celda <> Empty Then ComboBox1.AddItem celda.Value
    Next

Quiero que me muestre los datos de las columnas C en 1ª columna y D en la 2ª

1 respuesta

Respuesta
1

H o l a:

Te anexo el código con unos comentarios:

Private Sub CheckBox2_Click()
    If CheckBox2 Then
        ComboBox1.Enabled = True
        'carga nuevamente el combo por los registros nuevos
        ComboBox1.Clear
        For i = 11 To Range("B" & Rows.Count).End(xlUp).Row
            ComboBox1.AddItem Cells(i, "C") 'original (i, "D") '1ª columna
            '
            'Cuando se agregó el primer dato en el combo con additem, este dato se almacena en la
            'columna 0 del combobox, para agregar el siguiente dato en la columna 1, lo que
            'se tiene que hacer es agregar el dato pero con el método List
            'En el método list se tiene que indicar en cuál fila y en cuál columna se va a agregar
            'el dato, entonces el número de fila será igual al total de registros que tiene el combobox:
            'combobox. Listcount -1, se le resta uno porque recuerda que el combo se empieza a llenar desde
            'el registro 0; el siguiente parámetro es el número de columna, en este caso se le pone 1
            ComboBox1.List(ComboBox1.ListCount - 1, 1) = Cells(i, "D")
        Next
    End If
End Sub
'
Private Sub UserForm_Activate()
'Cargar combo
    ComboBox1.Enabled = False
    ComboBox1.Clear
    For Each celda In Range("C11:C" & Range("B" & Rows.Count).End(xlUp).Row) 'original("D11:D"
        If celda <> Empty Then
            ComboBox1.AddItem celda.Value
            ComboBox1.List(ComboBox1.ListCount - 1, 1) = celda.Offset(0, 1)
        End If
    Next
End Sub

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas