¿cómo rellenar un combobox con un rango 'dinámico'?

04/08/2003 - 19:11 por cesar | Informe spam
Hola , grupo ;)

quiero rellenar mediante VBA un combobox (de la barra de herramientas
controles) con los datos de dos columnas. La cantidad de datos de
estas dos columnas es variable, no sirve:

Worksheets("Hoja1").ComboBox1.ListFillRange = "Hoja2!C2:D56"

la primera celda del rango siempre será C2, pero la última será D(n),
donde n es cualquier número. La hoja 2 no tiene 'huecos', es decir,
celdas vacías intermedias: desde A1 hasta K(n) todas las celdas
contienen datos.

¿cómo podría seleccionar el rango que necesito?
 

Leer las respuestas

#1 Adolfo Fernández
05/08/2003 - 19:04 | Informe spam
Hola Cesar,
Supongo que tu necesidad de rellenar el combobox desde VBA es debido a que
el rango tendrá n filas no? Si no es asi, no sigas leyendo.
Si el motivo es ese, te propongo que definas el rango como lo harias
normalmente desde Insertar - Nombre - Definir, y en vez de poner
Hoja2!C2:D56 utilices la función desref.
Mas o menos quedaría de la siguiente forma

ÞSREF(Hoja1!$C$2;;;CONTARA(Hoja1!$C:$C);2)

El único inconveniente es que en la columna C no puede haber mas valores que
los del rango, y en caso contrario se los tendrías que restar
CONTARA(Hoja1!$C:$C)-X

Yo utilizo muchisimo esta función porque al igual que tu casi siempre
trabajo con rangos dinamicos y no veas la pila tiempo y problemas que me
soluciona. Ademas, así te evitas tener que ejecutar la macro siempre que
quieras actualizar los valores.

Un saludo,
Adolfo

"César" escribió en el mensaje
news:
(brite) wrote in
news::
[...]
>
> ¿cómo podría seleccionar el rango que necesito?

ok, me respondo a mi mismo (y a cualquiera con la misma duda), esto


parece
funcionar:

Dim rng As Range
ActiveSheet.ComboBox1.ColumnCount = 2
With Worksheets("Hoja1")
'selecciono las columnas 2 y 3 hasta el final:
Set rng = .Range(.Cells(1, 2), .Cells(Rows.Count, 3).End(xlUp))
End With
With ActiveSheet
.ComboBox1.List = rng.Value
End With

Preguntas similares