Cuadro combinado de Excel Urgente

08/11/2003 - 15:31 por Alberto | Informe spam
Saludos a Todos

El asunto es:En excel en el cuadro de formularios escojo
un cuadro combinado y en los cuadro de dialogos se me
indica a que celda puedo vincular la seleccion. Como solo
se puede escojer una celda, la pregunata es si puedo hacer
que esa celda varie cada vez que consulete en cuadro
combinado, es decir si por ejemplo en el cuadro combinado
la he vinculado a la celda A1, quisiera que la proxima vez
que consulte el cuandro combinado la respuesta sea la
celda A2 y la proxima la A3 hasta una celda limite de
por ejemplo A10..

Saudos y Gracias por la ayuda.
 

Leer las respuestas

#1 Héctor Miguel
12/11/2003 - 12:24 | Informe spam
Hola, Alberto ! => tarde :(( 'pero'... ¡sin sueño!!! :)) <
... formularios ... cuadro combinado ... vincular la seleccion ... solo se puede escojer una celda
... hacer que esa celda varie cada vez que consulte el cuadro combinado
... por ejemplo ... vinculado a la celda A1 hasta ... A10



[p.e.] 'hacer' que la celda 'vinculada' a la seleccion 'sea' la celda 'activa' ['dentro' del rango 'A1:A10']
suponiendo que...
1.- el 'origen' de los datos es el rango 'D1:D5' [pudiera ser un rango nombrado -estatico o dinamico-]
2.- al objeto [combo] le 'asignas' un nombre [en la caja de nombres] p.e. 'Combo_Móvil'
3.- agregue una 'validacion' [por si el usuario introduce -manualmente- un numero 'mayor' a los n_elementos del combo]
4.- agregue una 're-asignacion' a las teclas de 'navegacion' [por si se trata de una seleccion 'multiple']
[si la celda 'activa' -aun dentro de una seleccion 'multiple'- NO esta 'dentro' del rango... el combo NO 'estara operable']
==> esta 'tecnica' resulta util para 'evitar' los casos -en eventos- de: [p.e.] 'If Target.Count > 1 Then Exit Sub' <=
==> en el modulo de codigo de 'la hoja' <> ASEGURATE que el procedimiento del evento '_SelectionChange' NO SEA 'Private' <=Sub Worksheet_SelectionChange(ByVal Target As Range): On Error Resume Next
With Range("a1:a10").Validation: .Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="1", Formula2:="" & Me.Shapes("Combo_Móvil").ControlFormat.ListCount & ""
.ErrorTitle = "ERROR !!!": .ErrorMessage = "¡ 'Entre' 1 y n_elementos en el Combo !!!"
End With
With Me.Shapes("Combo_Móvil").ControlFormat
If Intersect(Target, Range("a1:a10")) Is Nothing Then GoTo NoLink
If Target.Count > 1 Then Asignar_Teclas Else Regresar_Teclas
If Intersect(ActiveCell, Range("a1:a10")) Is Nothing Then GoTo NoLink
.LinkedCell = "": .ListFillRange = "d1:d5": .ListIndex = ActiveCell
.LinkedCell = ActiveCell.Address: Exit Sub
NoLink:
.LinkedCell = "": .ListFillRange = ""
End With
End Sub

==> en un modulo de codigo 'normal' <=Option Private Module
Sub Asignar_Teclas()
With Application
.OnKey "~", "'Monitor_Teclas ""{Enter}""'": .OnKey "+~", "'Monitor_Teclas ""+{Enter}""'"
.OnKey "{Enter}", "'Monitor_Teclas ""{Enter}""'": .OnKey "+{Enter}", "'Monitor_Teclas ""+{Enter""'"
.OnKey "{Tab}", "'Monitor_Teclas ""{Tab}""'": .OnKey "+{Tab}", "'Monitor_Teclas ""+{Tab}""'"
End With
End Sub
Sub Regresar_Teclas()
With Application
.OnKey "~": .OnKey "+~": .OnKey "{Enter}": .OnKey "+{Enter}": .OnKey "{Tab}": .OnKey "+{Tab}"
End With
End Sub
Sub Monitor_Teclas(ByVal Teclas As String)
Regresar_Teclas
On Error GoTo Salir
Application.EnableEvents = False
SendKeys Teclas, True
Application.EnableEvents = True
Call Hoja1.Worksheet_SelectionChange(Selection)
Salir:
Application.EnableEvents = True
End Sub

saludos,
Héctor.

Preguntas similares