danuryx | |
| 2007-08-15 23:41 - Respuestas: 1 - Tema nº: 2462316
Características: Windows XP Profesional, Dell.
Tengo un problema necesito generar un combo box que busque en una columna de excel informacion no repetida y que la añada a este combobox, asi mismo que cuando elija una opcion de la lista del combobox se me muestre la informacion de todos los registros con esa opcion.
| |
|
|
ebolo | |
|
Re: Combo box para excel - 2007-08-16 16:33 - Respuesta 2
Hola danuryx, te lo dejo hecho mediante código de VBA.
Copia lo siguiente en la parte de código VBA de la hoja; para ello ves a Herramientas - Macro - Editor de VBA.
Esto lo que hace es que te mete en un combobox los datos distintos que existen en el rango A1:A1000.
Private Sub Worksheet_Activate()
Dim ruta, consulta As String
Dim rs As ADODB.Recordset, cn As ADODB.Connection
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
'Definimos la ruta del xls
ruta = "larutadetulibro.xls"
'Abrimos la conexión al libro xls
cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & ruta
'Creamos el select y abrimos el recordset
consulta = "SELECT distinct * FRom A1:A1000"
rs.Open consulta, cn
'Vaciamos cuadro combinado
Me.ComboBox1.Clear
'Rellenamos cuadro combinado
While Not rs.EOF
If Not IsNull(rs.Fields.Item(0)) Then
Me.ComboBox1.AddItem rs.Fields.Item(0)
End If
rs.MoveNext
Wend
'Cerramos recordset y conexión
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Al elegir un elemento del combo se autofiltra la columna A, a partir de A2, si A1 no es coincidente. Es decir siempre te muestra A1.
Private Sub ComboBox1_Click()
Worksheets("Hoja1").Range("A1:A1000").AutoFilter _
Field:=1, _
Criteria1:=Me.ComboBox1, _
VisibleDropDown:=False
End Sub
Para quitar autofiltro y ver todos los registros, hacer dobleclick en el combo.
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1 = ""
Worksheets("Hoja1").AutoFilterMode = False
End Sub
No sé si es eso lo que quieres pero será algo parecido.
Saludos. | |
|
|
|