¿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:
(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
Respuesta Responder a este mensaje
#2 César
05/08/2003 - 21:42 | Informe spam
"Adolfo Fernández" wrote in
news::

Hola Cesar,
Supongo que tu necesidad de rellenar el combobox desde VBA es debido a
que el rango tendrá n filas no?



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
Respuesta Responder a este mensaje
#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
Respuesta Responder a este mensaje
#4 César
06/08/2003 - 07:09 | Informe spam
"Rene Moreno" wrote in
news::

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






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!
Respuesta Responder a este mensaje
#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:
"Adolfo Fernández" wrote in
news::

> Hola Cesar,
> Supongo que tu necesidad de rellenar el combobox desde VBA es debido a
> que el rango tendrá n filas no?

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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida