ComboBox de FORMULARIO, ordenar...

19/08/2004 - 23:10 por lamarse | Informe spam
Hola de nuevo a todos.

Otra preguntita:

Tengo creado un ComboBox2 (de Form) y lo tengo lincado con un rango de
donde mi toma los valores que luego se me muestran en el Combo (al
abrirlo). En este caso son fechas. Tras pelearme un ratito con el
formato de las fechas (para que no me saliera (se mostrara) el temido
nº 31238 (..etc) y SIla fecha en si (o sea, 12/AGO/04) me ha surjido
otra duda (con el formato creo que he superado la prueba :D):

Cada vez que selecciono una fecha de la lista del ComboBox2, se me
muestra toda la lista empezando desde la primera celda del rango.
Bien, cuando empiezo, todo bien (pues se muestran al pulsar, 8 fechas)
y son faciles de seleccionar, pero... cuando ya paso esa "primera
hoja" se me hace incómodo.

¿Cómo podria conseguir que si selecciono una fecha (lease la de la
celda 30), cuando quiero seleccionar otra nueva fecha y pulso el
ComboBox2, simplemente me muestre como primera el contenido de la
celda 30?
Dicho de otro modo: tengo los dias de AGOSTO (del 1 al 31), del 1 al
8, NO PROBLEM, pues me salen en pantalla al abrir, pero... cuando
quiero seleccionar el 14, abro y veo hasta el 8, y he de bajar con la
barra hasta ver el 14 si tengo seleccionado el 13, ¿cómo podria
hacer para que al abrir el ComboBox2 la primera fecha (de esas 8 que
me muestra) fuera la seleccionada, o sea, la 13-Ago.. y asi siempre
cuando selecciono una fecha.. (que esta fuera la primera que me
muestra)?

Ya que estamos, tengo otra problemática.

2.: Ocultar/mostrar filas/columnas en funcion de la fecha que
selecciono en el ComboBox2.

Gracias de nuevo a todos.


Victor [VDP]

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/08/2004 - 06:08 | Informe spam
hola, victor [VDP] !

un ComboBox2 (de Form) ... lincado con un rango de ... fechas.
Tras pelearme un ratito con el formato ... para que no me saliera ... 31238 ... y SI la fecha ... 12/AGO/04)
me ha surjido otra duda (con el formato creo que he superado la prueba :D):
Cada vez que selecciono ... muestra toda la lista empezando desde la primera celda del rango [...]
¿... conseguir que ... cuando quiero seleccionar otra ... muestre como primera el contenido [¿seleccionado?]



1° [creo que] el combobox ES de la barra de herramientas 'cuadro de controles'... ->NO de formularios<- [?]
2° los comboboxes [de cuadro de controles] NO 'respetan' el formato del 'rango de entrada' [ListFillRange]
... TAMPOCO 'respetan' el formato de la celda 'donde depositan' la seleccion [LinkedCell] :-(
3° la 'prueba del formato' [probablemente] la 'superaste' via codigo, 'aplicando' un formato personalizado a la seleccion [?]
4° si un combo [formularios o controles] 'usa' la propiedad 'LinkedCell'... SI se 're-inicia' ->a partir de<- la seleccion 'actual'
[con los 'detalles' mencionados con relacion a los formatos] :((
5° [creo que...] te seria 'mas util' usar reglas de validacion por lista
solo procura 'mantener' ->EL MISMO formato de fecha<- en el rango de la lista y en la celda 'validada'

... otra problematica ... Ocultar/mostrar filas/columnas en funcion de la fecha que selecciono en el ComboBox2.



aqui... [me temo que...] tienes que dar detalles mas especificos ;)

si cualquier duda o informacion adicional... ¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 lamarse
20/08/2004 - 23:05 | Informe spam
Hola Hector (again). ¿Q tal?

Gracias por atenderme una vez más.
A ver, voy a "tratar" de explicarme un poco mejor y más ampliamente
(en mis 2 necesidades).

1ªNecesidad:

Tengo un ComboBox (Control Toolbox) creado. Este hace referencia a
RANGE(I2:I123), o sea, en "ListFillRange" hay "Sheet1!I2:I123". Asi,
cuando lo pulso, se abre y me muestra las fechas que hay en ese RANGE
(pues hay fechas). Tenia un problema con el formato que me mostraba
(como bien habia dicho antes) y lo solucioné (como bien has adivinado)
con este código:

Private Sub Combobox2_Click()
ComboBox2.Value = Format(CLng(ComboBox2.Value), "dd/mmm/yy")
End Sub

Ahora, funciona bien. Cada vez que lo abro, me muestra de la fecha 1ª
a la ultima. El caso es que yo deseo que memorice la "posición" de la
ultima fecha seleccionada, y cuando vayas a seleccionar otra,
simplemente las 8 que te muestra (cuando pulsas sobre el ComboBox)
sean más allá de la fecha que hay seleccionada (o sea, la que hay en
VALUE). Esto lo quiero para no tener que "ir a buscar" la fecha
siguiente.
EJEMPLO: Tengo de la fecha 1/jul/04 hasta 1/feb/05. Tengo seleccionado
3/dic/04 (VALUE=3/dic/04), y ahora quiero seleccionar 4/dic/04.
Tal y como esta ahora, tendré que "navegar" dentro del ComboBox (con
la barra espaciadora), pasando desde 1/jul/04 hasta visualizar
4/dic/04, y de ahi seleccionarlo.
Lo que yo desearia (aunque sea hecho con VBA!!) es que, al pulsar el
ComboBox, la primera fecha que me mostrara fuera 4/dic/04 (o la misma,
es decir: 3/dic/04), y las 7 restantes. Asi yo podría seleccionar
facil y cómodamente la siguiente (o si es la anterior esta
relativamente cerca). Bueno, si el orden es facil de conseguir, tal
vez seria interesante que te mostrara:
30/nov/04
1/dic/04
2/dic/04
3/dic/04
4/dic/04
5/dic/04
6/dic/04
7/dic/04

En fin, espero que esto se entienda perfectamente y realmente exista
alguna solucion. Mi objetivo es poder tener fechas en la lista del
ComboBox, y eso lo tengo hecho con el RANGE(I2:I123), y de ahi la
NECESIDAD 1ª, pero si para conseguir esta NECESIDAD seria mejor
hacerlo de otro modo...(en vez de tener las fechas en el range) yo
estoy abierto a posibilidades.

Gracias hasta aqui.

2ªNecesidad:

Una vez la 1ª ya funciona (bueno... de hecho, no hace falta que
funcione... ésta está por delante, de hecho, indistintamente de si la
1ª funciona o no), tengo toda una serie de filas HIDEN (lease de la 10
a la 10.000). Mi necesidad consiste en que, cuando tengo seleccionada
una fecha (en el ComboBox) un nº X de filas se muestren, y sino está
esa fecha, estas filas esten OCULTAS.
A ver, todas HIDEN, y la 1ª fecha (cuando este visualizada en el
ComboBox) muestra de la fila 10 a la 39 (el resto HIDEN). La 2ª fecha
muestra de la fila 40 a la 69 (el resto HIDEN) y asi con todas las
fechas. Léase que por cada fecha hay unas 30 filas asociadas, que se
ocultan o muestran en función de si ésta fecha se visualiza en el
ComboBox o no.

Espero tambien se haya entendido correctamente ahora.
En fin, sino ya miraré de explicarlo con ejemplos y mejor aun.

Hector, mil gracias por adelantado, por tu dedicacion y tiempo.

Victor [VDP]
Respuesta Responder a este mensaje
#3 Héctor Miguel
21/08/2004 - 07:47 | Informe spam
hola, victor [VDP] !

... ComboBox (Control Toolbox) ... en "ListFillRange" ... "Sheet1!I2:I123" ... (... hay fechas).
... problema con el formato ... lo solucione (como bien has adivinado) con ... codigo [...]
... que memorice la "posición" de la ultima fecha seleccionada ... para no tener que "ir a buscar" la fecha siguiente [...]



=> [hasta aqui...] 'es' pecisamente como te comentaba... [NO 'respetan' los formatos, etc. etc. etc.]
al modificar [por codigo] la 'presentacion' de la fecha en el combo... [es 'como si'...]
'rompes la conexion' [del combo] con el 'ListFillRange'
y es la razon por la que 'vuelve a presentar' las fechas desde el principio :-(
=> una solucion es... 'ir llenando' el combo [con el metodo 'AddItem'] y 'dando formato' a cada 'elemento'

... tengo toda una serie de filas HIDEN (... de la 10 a la 10.000).
... que cuando tengo seleccionada una fecha (en el ComboBox) un nº X de filas se muestren [...]
... todas HIDEN
... la 1ª fecha (cuando este visualizada en el ComboBox) muestra de la fila 10 a la 39 (el resto HIDEN).
... 2ª fecha muestra de la fila 40 a la 69 (el resto HIDEN) y asi con todas las fechas.
... por cada fecha ... unas 30 filas ... se ocultan o muestran en funcion de si esta fecha se visualiza [...]



en seguida te expongo una forma de 'cumplir' con ambas 'necesidades'... =>excel 2000 en adelante<= OJO
suponiendo que 'todo lo anterior'... 'sucede' [exclusivamente] EN 'la hoja' que tiene incrustado el combobox :D
=>tambien 'uso' el evento '_activate' de la hoja para 'cargar' las fechas en el combo<= OJO
[posiblemente necesites 'cambiarlo' a otro evento, p.e. en el evento '_open' del libro???]
si cualquier duda, o informacion adicional... ¿comentas?
saludos,
hector.
en el modulo de codigo de 'la hoja' ==Private Const Factor As Integer = 10
Private Const Ampliar As Integer = 29
Private Const Completo As String = "10:10000"
Private Const Fechas As String = "i2:i123"
Private Const Formato As String = "dd/mmm/yy"
Dim Cargando As Boolean, Rango As String, _
Fecha As Integer, Fila1 As Integer, Fila_n As Integer
Private Sub Ocultar_Mostrar(Optional ByVal Filas As String = "")
Application.ScreenUpdating = False
Rows(Completo).Hidden = True
If Filas <> "" Then Rows(Filas).Hidden = False
End Sub
Private Sub Worksheet_Activate()
Dim Celda As Range
Cargando = True
With ComboBox1
.Clear
For Each Celda In Range(Fechas)
.AddItem Format(Celda, Formato)
Next
End With
Cargando = False
Ocultar_Mostrar
End Sub
Private Sub ComboBox1_Change()
If Cargando Then Exit Sub
Ocultar_Mostrar
Fecha = ComboBox1.ListIndex + 1
Fila1 = Factor + ((Ampliar + 1) * (Fecha - 1))
Fila_n = Fila1 + Ampliar
Rango = Fila1 & ":" & Fila_n
Ocultar_Mostrar Rango
SendKeys "{Esc}"
End Sub
Respuesta Responder a este mensaje
#4 lamarse
23/08/2004 - 00:47 | Informe spam
Hola Hector.

Muchas gracias por tu ayuda. Te comento que parece funcionar (aunque
aun me lo he de mirar más a fondo... y ahora se me plantean mucho
trabajo elaborando la siguiente parte), pero hay una cosa que seguro
que no va. Esta es el formato de fecha.

Al darme todo ese código, he desconectado el que tenia para y bueno,
todo funciona bien, pero he perdido el formato de las fechas. No estoy
seguro de si debo o no activar el código que tenia puesto antes,
aunque si es cierto que lo he probado y parece no funcionar.

Bueno, solo era comentártelo. Ya te diré más cosas a lo largo de esta
semana, pero tal vez me deje algun detalle "sobre el formato fechas"
que me hayas explicado ya y no haya entendido.

Ya te contaré mas.

Gracias

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