En combobox vba excel 2007, mostrar datos no repetidos de una columna

Tengo una hoja de excel (Hoja1) con dos columnas de la siguiente manera:

A B

1 DOMÉSTICOS PERROS

2 DOMÉSTICOS GATOS

3 domésticos canarios

4 no domésticos león

5 no domésticos cocodrilo

Necesito colocar 2 combobox en un userform de manera que cuando desplégue la lista del combobox1 me liste únicamente las dos opciones (DOMÉSTICOS, NO DOMÉSTICOS sin repetirlos) y que al elegir una de estas opciones, me liste en el combobox2 los valores que corresponden a cada categoría, por ejemplo si eligiera DOMÉSTICOS que liste PERROS, GATOS, CANARIOS. Lo que no quiero es tener que valerme de la rutina: combobox1. Additem " DOMÉSTICOS" Y luego con NO DOMÉSTICOS. Igual en el combobox2 no quiero decir:

if combobox1.additem "DOMÉSTICOS" then combobox2.additem "PERRO", etc.

Lo que quiero es algo que me permita que al ingresar nuevos datos en esas columnas me liste la información que voy alimentando de a pocos en la hoja de cálculo. Espero me puedan ayudar y espero no haber sido enredado al explicar.

1 respuesta

Respuesta
1

Utiliza la siguiente macro.

'***Macro***
'Pone los valores correspondientes en combobox2
'según el valor seleccionado en combobox1
Private Sub ComboBox1_Change()
'Por.Dam
Me.ComboBox2.Clear
    catego = ComboBox1.Value
    Set hoja = Worksheets("Hoja1")
    ufila = hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
    For i = 1 To ufila
        animal = Cells(i, 2)
        If Cells(i, 1) = catego Then
            With Me.ComboBox2
                .AddItem animal
            End With
        End If
   Next
End Sub
'Pone valores unicos combobox1
Private Sub UserForm_Activate()
'Por.Dam
Dim col As New Collection
    Set hoja = Worksheets("Hoja1")
    ufila = hoja.Cells(hoja.Rows.Count, 1).End(xlUp).Row
    On Error Resume Next
    For i = 1 To ufila
        col.Add Item:=hoja.Cells(i, 1).Value, Key:=CStr(hoja.Cells(i, 1).Value)
    Next i
    For i = 1 To col.Count
        Me.ComboBox1.AddItem col(i)
    Next i
    Me.ComboBox2.Clear
End Sub
'***Macro***

Saludos.Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas