¿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?

Preguntas similare

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:
Mostrar la cita
parece
Mostrar la cita
#2 César
05/08/2003 - 21:42 | Informe spam
"Adolfo Fernández" wrote in
news::

Mostrar la cita
el rango tiene a fecha de hoy 56 filas y ocupa dos columnas; cada mes crece
en aproximadamente 5 o 6 filas. La solución que propones fue lo primero que
probé (aunque con OFFSET y COUNTA en lugar de DESREF y CONTARA) y no
conseguí hacerla funcionar. Igual es por no haber usado la versión
castellana que tú me propones, lo volveré a intentar.

Gracias por tu consejo, un saludo
César
#3 Rene Moreno
06/08/2003 - 01:20 | Informe spam
A ve si esto te sirve:

Dim rng As Range
ActiveSheet.ComboBox1.ColumnCount = 2
With Worksheets("Hoja1")
'*********
Set rng = .Cells(1, 1).Currentregion
'esta linea seleccinoa todas las celdas llenas adyacentes a la celda A1
'*********
End With
With ActiveSheet
.ComboBox1.List = rng.Value
End With
#4 César
06/08/2003 - 07:09 | Informe spam
"Rene Moreno" wrote in
news::

Mostrar la cita
no, porque sólo quiero utilizar dos columnas, y no todas; como dije, lo
solucioné con el código que pongo en mi primera respuesta a mi propia
pregunta. Pero algún día esto sí que puede servir así que gracias!
#5 Adolfo Fernández
06/08/2003 - 08:14 | Informe spam
Hola Cesar

Lo de utilizar las funciones en su nombre ingles o castellano depende de la
versión de office que utilices, si esta en castellano, no te va a entender
la función offset.

A mi me gusta programar lo mínimo posible, he comprobado que excel tiene
gran cantidad de funciones y opciones que satisfacen la mayoría de mis
necesidades y además agilizan mucho la aplicación.

Si tienes problemas con la función desref o en su defecto offset comentamelo
que seguro lo podemos solucionar.

Un saludo,
Adolfo
"César" escribió en el mensaje
news:
Mostrar la cita
crece
Mostrar la cita
que
Mostrar la cita
Ads by Google
Search Busqueda sugerida