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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Héctor Miguel
12/11/2003 - 12:32 | Informe spam
se me 'chispotio' [de nuevo] un dato 'importante'...

1.- el 'objetivo' de que el procedimiento del evento '_SelectionChange' NO sea privado es...
poder 'llamarlo' -de nuevo- en la macro de la 're-ejecucion' de las 'teclas de navegacion'
puesto que al tratarse de una seleccion 'multiple', al navegar por la seleccion NO se 're-dispara'
2.- el 're-llamado' del evento es 'a traves' del 'nombre-codigo' de 'la hoja' [suponiendo 'Hoja1']
'notar' la linea [antes de la 'etiqueta' 'Salur:' en la macro 'Monitor_Teclas'
=> Call Hoja1.Worksheet_SelectionChange(Selection) <
saludos,
Héctor.
Respuesta Responder a este mensaje
#3 Alberto
12/11/2003 - 14:37 | Informe spam
Gracias por tu ayuda Hector...

voy aplicar tu sugerencia... haber como me va...

gracis de nuevo...

Saludos a los noctambulos.
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}""'": .OnK


ey "+{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.


.

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