La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Excel/769794-Anadir-varias-columnas-a-un-combobox-con-VBA.html

Añadir varias columnas a un combobox con VBA

Añadir varias columnas a un combobox con VBA

Publicado por jt (6 intervenciones) el 09/03/2007 11:15:57
Mi problema es el siguiente: en combobox1, elijo una variable (hasta aquí bien), ese valor seleccionado me sirve para filtrar los datos de una hoja . El problema viene al intentar introducir esos datos filtrados en un combobox2 para seleccionar uno de los datos filtrados.
Imágen de perfil de Abraham Valencia

RE:Añadir varias columnas a un combobox con VBA

Publicado por Abraham Valencia (2415 intervenciones) el 09/03/2007 18:32:29
Vayamos por partes. En tu primer combobox elijes un valor (no es lo mismo que varibale!!!), dependiendo de ese valor, en tu hoja se filtran los datos. Por lo que dices, tienes un codigo que introduce estos datos filtrados a tu segundo combobox, pero: Cual es el problema en si??? dices "el problema viene al intentar introducir esos datos filtrados en un combobox2 para seleccionar uno de los datos filtrados.", pero no especificas cual es el dichos problema.

Abraham

RE:Añadir varias columnas a un combobox con VBA

Publicado por haver (149 intervenciones) el 09/03/2007 18:43:19
este codigo te copia las filas que estan visibles ( el autofiltro solo oculta las filas ) solo adecualo a tu codigo

Sub combobox1_change()

Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=ComboBox1.Value

finalrow2 = Range("A65536").End(xlUp).Row
DATOS = 2
Do While DATOS <> finalrow2

If Range("A" & DATOS).Rows.Hidden = False Then
ComboBox2.AddItem Range("A" & DATOS)
End If

DATOS = DATOS + 1

Loop

RE:Añadir varias columnas a un combobox con VBA

Publicado por haver (149 intervenciones) el 09/03/2007 18:55:23
te eh enviado el ejemplo a tu correo

RE:Añadir varias columnas a un combobox con VBA

Publicado por jt (6 intervenciones) el 09/03/2007 19:06:44
Gracias, el problema es como meto las filas seleccionadas (p.ej. 3 columnas por fila) en combobox2.

RE:Añadir varias columnas a un combobox con VBA

Publicado por haver (149 intervenciones) el 09/03/2007 19:13:14
Prueba esto donde CHR(32) es el codigo de un espacio en blanco

ComboBox1.AddItem Range("A1") & Chr(32) & Range("B1")

RE:Añadir varias columnas a un combobox con VBA

Publicado por jt (6 intervenciones) el 09/03/2007 19:39:03
No funciona, ahora no me muestra ni una columna

RE:Añadir varias columnas a un combobox con VBA

Publicado por haver (149 intervenciones) el 09/03/2007 19:46:30
Pues a mi el codigo si me funciona seria de ver como esta el tuyo

RE:Añadir varias columnas a un combobox con VBA

Publicado por jt (6 intervenciones) el 09/03/2007 19:49:49
Vale, rectificado lo anterior sale en 1 sola columna lo de las dos. Puede servir pero, si necesitara que salieran en dos columnas en lugar de en una??
Muchas gracias.
jt

RE:Añadir varias columnas a un combobox con VBA

Publicado por haver (149 intervenciones) el 09/03/2007 21:03:03
mmm Pos si quieres que se separen por columas utiliza una lista o pon mas chr(13) entre cada una o prueba poniendo un CHR(9) ( tab horizontal )
para referencia utiliza la ayuda de excel sombrea additem o combobox y ahi le defines mas opciones...

RE:Añadir varias columnas a un combobox con VBA

Publicado por JC (1 intervención) el 04/04/2007 21:57:07
Hola a todos, bueno tengo el mismo problema, saben si el codigo funciona para VB6? o me podrian alcanzar un codigo similar para VB6? gracias.

RE:Añadir varias columnas a un combobox con VBA

Publicado por Pablo (2 intervenciones) el 19/02/2012 21:00:57
Para añadir datos a mas de una columna, se debe especificar la cantidad de las mismas en la propiedad "Columncount" del control.
Una vez que las columnas estan definidas, los datos se agregan de la siguiente forma:

Combobox1.additem
Combobox1.List(0,0) = "Dato Columna 1"
Combobox1.List(0,1) = "Dato Columna 2"


Con un contador en el primer parametro de la propiedad List, se puede incrementar el valor de la Fila donde se agregaran los datos.

Suerte

RE:Añadir varias columnas a un combobox con VBA

Publicado por Pablo (2 intervenciones) el 19/02/2012 21:02:25
PD: Estas propiedades se pueden usar tambien con el control Listbox
sin imagen de perfil

RE:Añadir varias columnas a un combobox con VBA

Publicado por Miguel (2 intervenciones) el 06/04/2013 11:23:11
Hola Pablo,
En la situación descrita me encuentro yo, pero el caso es que yo tengo este código en el programa y solo me muestra una columna, así que no entiendo porque. Te muestro el código programado haber si puedes decirme cual es mi fallo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Suministra_Click()
    Dim I As Integer, Pos As Integer, numReg As Integer, Pos1 As Integer
    ComboBox1.Visible = True
    Sheets("Productos").Select
    Range("B1").Select
    Do While ActiveCell <> Productos.Text
        Productos.AddItem ActiveCell.Value
        ActiveCell.Offset(1, 0).Select
        Celda = ActiveCell.Address
    Loop
    Pos = Mid(Celda, 4, 3) + 1 'Detecta en que linea se posiciona al principio del fichero
    Range("B" & Pos).Select
    Do While ActiveCell = Empty
        Productos.AddItem ActiveCell.Value
        ActiveCell.Offset(1, 0).Select
        Celda = ActiveCell.Address
    Loop
    Pos1 = Mid(Celda, 4, 3) - 1 'Detecta en que linea se posiciona al final del fichero
    numReg = (Pos1 - Pos)   'nº de registros que cumplen la condición
    Range("B" & Pos).Select
    ComboBox1.Clear
    For I = 0 To numReg   'Cargar las lineas del ComboBox
        Productos.AddItem ActiveCell.Value
        ComboBox1.AddItem
        ComboBox1.List(I, 0) = Range("C" & Pos) & Chr(9)
        ComboBox1.List(I, 1) = Range("D" & Pos)
        Pos = Pos + 1
    Next
End Sub


Un saludo y muchas gracias
sin imagen de perfil

RE:Añadir varias columnas a un combobox con VBA

Publicado por Miguel (2 intervenciones) el 06/04/2013 17:23:35
Ya funciona, este es el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub Suministra_Click()
    Dim I As Integer, Pos As Integer, numReg As Integer, Pos1 As Integer
    ComboBox1.Visible = True
    Sheets("Productos").Select
    Range("B1").Select
    Do While ActiveCell <> Productos.Text
        Productos.AddItem ActiveCell.Value
        ActiveCell.Offset(1, 0).Select
        Celda = ActiveCell.Address
    Loop
    Pos = Mid(Celda, 4, 3) + 1 'Detecta en que linea se posiciona al principio del fichero
    Range("B" & Pos).Select
    Do While ActiveCell = Empty
        Productos.AddItem ActiveCell.Value
        ActiveCell.Offset(1, 0).Select
        Celda = ActiveCell.Address
    Loop
    Pos1 = Mid(Celda, 4, 3) - 1 'Detecta en que linea se posiciona al final del fichero
    numReg = (Pos1 - Pos)   'nº de registros que cumplen la condición
    Range("B" & Pos).Select
    ComboBox1.Clear
    ComboBox1.ColumnCount = 2
    ComboBox1.List = Range("C" & Pos, "D" & Pos).Value
    For I = 0 To numReg   'Cargar las lineas del ComboBox
        ComboBox1.AddItem ActiveCell.Value
        ComboBox1.AddItem
        ComboBox1.List(I, 0) = Range("C" & Pos)
        ComboBox1.List(I, 1) = Range("D" & Pos)
        Pos = Pos + 1
    Next
End Sub


Un saludo