Lanzar eventos sobre celdas

07/11/2005 - 05:18 por Alejandro Garrammone | Informe spam
Hola Grupo! Les cuento mi problema:
Necesitaria lanzar un evento al presionar [Enter] sobre una celda.
Por ejemplo, estoy 'parado' sobre la celda A1 e ingreso el número '100', al
presionar [enter] quiero que se ingrese el número en la celda y que el
'cursor' no vaya a la celda 'A2', sino que quiero que se pare en la celda
'C8'.
Es posible hacer esto?

Gracias por todo,

Alejandro.

Preguntas similare

Leer las respuestas

#6 Alejandro Garrammone
08/11/2005 - 23:39 | Informe spam
Hola Héctor!

Comentarios al margen.
a) si el usuario desea volver, lo haría con los cursores.
b) si hay algun campo en el cual no este dentro del tour, la planilla
funcionará normalmente (si esta activada, ira para abajo, sino, quedará en
el mismo lugar, no tengo problemas con respecto a eso, siempre y cuando en
las celdas que estan dentro del 'tour' al presionar el enter pueda controlar
hacia hacia qué celda se dirige el cursor).
Por eso es que no quiero 'restringir' al usuario, sólo quiero brindarle una
pequeña ayuda, si no la quiere utilizar pues, p.e. avanza con los cursores,
es problema del usuario. Con lo que me habías dado inicialmente andaría
bárbaro, el tema es que si el usuario no ingresa ningun valor no se traslada
a la siguiente celda del tour.

Saludos,

Alejandro

"Héctor Miguel" escribió en el mensaje
news:%
hola, Alejandro !

... un formulario en la web... presionando el 'tab'... avanzas al
siguiente campo
... intento... lo mismo... con una planilla de excel, solo que...
utilizaria el 'enter'
... si el 'tour' es por las celdas A2, C4, B6, R4 y E5
... sobre la celda A2... le doy un valor o... presiono el enter
... el cursor deberia situarse en la celda C4 y asi... hasta llegar a la
celda E5
Espero que comprendas lo que necesitaria [...]



[creo que si comprendo lo que necesitas :))... solo que como te comentaba
anteriormente]...
existen otras 'eventualidades' que se necesita 'contemplar' para 'manejar
el tour' que pretendes [p.e.]...

1) [p.e. 'estando' en la celda 'A2']...
si el usuario simplemente pulsa {enter} [sin modificar el contenido de
'A2']...
el evento [_selectionchange] 'detecta' como la 'siguiente celda'...
a) la misma celda ['A2'] si el usuario NO utiliza la carcteristica de
'mover seleccion despues de entrar'
b) la celda 'A3' si el usuario SI utiliza dicha carcteristica ->con la
direccion de 'hacia abajo'<-
c) la celda 'B2' si el usuario SI utiliza dicha carcteristica ->con la
direccion de 'hacia la derecha'<- [y asi...]
[en resumen]... el evento [_selectionchange] NO es el 'mejor evento'
para 'controlar' dicho 'tour' :-((

2) en los formularios por la web, al pulsar {mayus}+{tab}... 'regresas'
al campo anterior...
necesitarias dicha 'funcionaidad' con el {enter} en tu planilla ???

3) excel cuenta con varias teclas y combinaciones, cuya 'funcionalidad
integrada' es una 'cierta navegacion' [rangos/hojas/libros]
combinando 'estas' con los -posibles- movimientos del mouse y/o
acciones 'imprevistas' del usuario... -?-
seria necesario modificar el comportamiento 'normal' de varias teclas,
combinaciones y eventos [p.e.]...
-> si tu estas 'controlando' el enter para 'detectar' la siguiente
celda...
y el usuario pulsa {tab}... o 'se va hasta home' con el mouse... o
selecciona un rango 'multiple'... o ???
-> que hacemos ??? :))

4) definitivamente... NO se trata de 'espantarte' :)) o hacerte ver
como que 'no se puede' :-((
[solo es que]... manejar o controlar ->la seleccion del usuario<- y los
eventos relacionados con seleccion de rangos...
requiere del mayor [y muy 'especifico'] detalle en cuanto a lo que se
le va a 'permitir' al usuario ;)

comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#7 Héctor Miguel
09/11/2005 - 04:25 | Informe spam
hola, Alejandro !

a) si el usuario desea volver, lo haria con los cursores.
b) si hay algun campo el cual no este dentro del tour, la planilla funcionara normalmente
(si esta activada, ira para abajo, sino, quedara en el mismo lugar, no tengo problemas con... eso
siempre y cuando en las celdas que estan dentro del 'tour' al presionar el enter pueda controlar hacia hacia que celda se dirige...
... no quiero 'restringir'... solo quiero brindarle una... ayuda, si no la quiere utilizar pues... es problema del usuario.
... lo que me habias dado inicialmente andaria... el tema es que si el usuario no ingresa... valor no se traslada a la siguiente celda del tour.



la siguiente propuesta modifica el comportamiento ['normal de navegacion'] de las teclas {enter} y {mayus}+{enter} [por si quieres 'regresar']
por lo cual es necesario 'devolverle' a dichas teclas su 'uso normal' ANTES de 'abandonar' la hoja y/o el archvo que las modifica ;)
aunque existen otras 'tecnicas' [como macros que 'tomen' parametros usadas y modificadas por el mismo codigo]...
creo que en el ejemplo te resultara +/- 'claro' el porque de algunos de mis comentarios anteriores :))

estoy tomando como celdas 'base' del tour, las mismas que mencionas en el mensaje anterior [en el evento '_selectionchange']
usando el metodo -> OnKey "Tecla", "Procedimiento" <- para modificar sus comportamientos
y usando una variable 'publica' que le indicara a las macros re/asignadas a las teclas hacia donde seguir 'el viaje' [adelante/atras]
con lo anterior, no 'importa' si el usuario esta utilizando [o no] la caracteristica de 'mover seleccion despues de entrar' :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) en el modulo de codigo de 'esa' hoja [donde se realizara el tour] ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2,c4,b6,r4,e5")) Is Nothing _
Then Origen = Target.Cells(1).Address: Modificar_Enter _
Else Restablecer_Enter
End Sub
Private Sub Worksheet_Deactivate()
Restablecer_Enter
End Sub

2) en un modulo de codigo 'normal' ==Option Private Module
Public Origen As String
' la tecla '~' es el 'enter' del teclado alfa-numerico _
la tecla '{enter}' es la del teclado numerico _
el signo '+' ES la tecla 'mayusculas' [por si quieres 'regresar' a la anterior] _
si se omite 'procedimiento'... las teclas vuelven a su comportamiento 'normal'
Sub Modificar_Enter()
With Application
.OnKey "~", "Avanzar": .OnKey "{enter}", "Avanzar"
.OnKey "+~", "Retroceder": .OnKey "+{enter}", "Retroceder"
End With
End Sub
Sub Restablecer_Enter()
With Application
.OnKey "~": .OnKey "+~": .OnKey "{enter}": .OnKey "+{enter}"
End With
End Sub
Sub Avanzar()
Select Case Origen
Case "$A$2": Range("c4").Select
Case "$C$4": Range("b6").Select
Case "$B$6": Range("r4").Select
Case "$R$4": Range("e5").Select
Case "$E$5": Range("a2").Select
End Select
End Sub
Sub Retroceder()
Select Case Origen
Case "$A$2": Range("e5").Select
Case "$C$4": Range("a2").Select
Case "$B$6": Range("c4").Select
Case "$R$4": Range("b6").Select
Case "$E$5": Range("r4").Select
End Select
End Sub
Respuesta Responder a este mensaje
#8 Alejandro Garrammone
09/11/2005 - 05:07 | Informe spam
Buenísimo!!!!anda espectacular!!!, habría que hacerte un monumento
Héctor!!!
Te hago una última consulta que no tiene nada que ver con este tema, a ver
si se te ocurre por qué.
Tengo una planilla que un usuario completa la cual posee diferentes macros.
El nombre inicial de la planilla es siempre el mismo. "presupuestos". Luego
el usuario carga los valores correspondientes y presiona un boton que tiene
asignada la macro "guardarycerrar".
Cuando yo cree los botones les asigne las macros de la planilla
"presupuestos", el tema (y el inconveniente) es que cuando se ejecuta la
macro, se guarda con otro nombre la planilla (para mantener la planilla
presupuestos en blanco para la proxima carga, la planilla con el otro nombre
tambien se guarda con las macros, por si que quiere modificar algo, pero si
este es el origen del problema, entonces vemos como sacarlas) y aquí es
justamente donde está el problema. Cuando se guarda con otro nombre la
planilla cambian las asignaciones de las macros a los botones.
P.E. si tenía un botón asignado a la macro GuardaryCerrar de la planilla
presupuesto y esta se guarda ahora con el nombre "pepito" cuando uno vuelve
a abrir la planilla presupuestos y se fija en los botones de las macros,
todos ahora se enfocan en pepito y no en presupuestos. Hay alguna manera de
bloquear esto? (algo así como si yo bloquera una celda con $A$1), para que
siempre los botones apunten únicamente a la planilla "presupuestos".

Gracias por toda la ayuda que me das, cada vez me voy adentrando más en esto
de hacer macros y la verdad es que es fabuloso la potencialidad que tiene!.

Alejandro.

"Héctor Miguel" escribió en el mensaje
news:
hola, Alejandro !

a) si el usuario desea volver, lo haria con los cursores.
b) si hay algun campo el cual no este dentro del tour, la planilla
funcionara normalmente
(si esta activada, ira para abajo, sino, quedara en el mismo lugar, no
tengo problemas con... eso
siempre y cuando en las celdas que estan dentro del 'tour' al presionar
el enter pueda controlar hacia hacia que celda se dirige...
... no quiero 'restringir'... solo quiero brindarle una... ayuda, si no
la quiere utilizar pues... es problema del usuario.
... lo que me habias dado inicialmente andaria... el tema es que si el
usuario no ingresa... valor no se traslada a la siguiente celda del tour.



la siguiente propuesta modifica el comportamiento ['normal de navegacion']
de las teclas {enter} y {mayus}+{enter} [por si quieres 'regresar']
por lo cual es necesario 'devolverle' a dichas teclas su 'uso normal'
ANTES de 'abandonar' la hoja y/o el archvo que las modifica ;)
aunque existen otras 'tecnicas' [como macros que 'tomen' parametros usadas
y modificadas por el mismo codigo]...
creo que en el ejemplo te resultara +/- 'claro' el porque de algunos de
mis comentarios anteriores :))

estoy tomando como celdas 'base' del tour, las mismas que mencionas en el
mensaje anterior [en el evento '_selectionchange']
usando el metodo -> OnKey "Tecla", "Procedimiento" <- para modificar sus
comportamientos
y usando una variable 'publica' que le indicara a las macros re/asignadas
a las teclas hacia donde seguir 'el viaje' [adelante/atras]
con lo anterior, no 'importa' si el usuario esta utilizando [o no] la
caracteristica de 'mover seleccion despues de entrar' :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) en el modulo de codigo de 'esa' hoja [donde se realizara el tour] ==> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2,c4,b6,r4,e5")) Is Nothing _
Then Origen = Target.Cells(1).Address: Modificar_Enter _
Else Restablecer_Enter
End Sub
Private Sub Worksheet_Deactivate()
Restablecer_Enter
End Sub

2) en un modulo de codigo 'normal' ==> Option Private Module
Public Origen As String
' la tecla '~' es el 'enter' del teclado alfa-numerico _
la tecla '{enter}' es la del teclado numerico _
el signo '+' ES la tecla 'mayusculas' [por si quieres 'regresar' a la
anterior] _
si se omite 'procedimiento'... las teclas vuelven a su comportamiento
'normal'
Sub Modificar_Enter()
With Application
.OnKey "~", "Avanzar": .OnKey "{enter}", "Avanzar"
.OnKey "+~", "Retroceder": .OnKey "+{enter}", "Retroceder"
End With
End Sub
Sub Restablecer_Enter()
With Application
.OnKey "~": .OnKey "+~": .OnKey "{enter}": .OnKey "+{enter}"
End With
End Sub
Sub Avanzar()
Select Case Origen
Case "$A$2": Range("c4").Select
Case "$C$4": Range("b6").Select
Case "$B$6": Range("r4").Select
Case "$R$4": Range("e5").Select
Case "$E$5": Range("a2").Select
End Select
End Sub
Sub Retroceder()
Select Case Origen
Case "$A$2": Range("e5").Select
Case "$C$4": Range("a2").Select
Case "$B$6": Range("c4").Select
Case "$R$4": Range("b6").Select
Case "$E$5": Range("r4").Select
End Select
End Sub

Respuesta Responder a este mensaje
#9 Héctor Miguel
09/11/2005 - 05:37 | Informe spam
hola, Alejandro !

... nada que ver con este tema... una planilla que un usuario completa... posee diferentes macros.
... el usuario carga... y presiona un boton que tiene asignada la macro "guardarycerrar".
Cuando yo cree los botones les asigne las macros de la planilla "presupuestos"
... cuando se ejecuta la macro, se guarda con otro nombre... tambien se guarda con las macros
... con otro nombre... cambian las asignaciones de las macros a los botones
... cuando uno vuelve a abrir la planilla presupuestos... las macros... ahora se enfocan en pepito y no en presupuestos [...]



1) 'asumo' que los botones que 'incrustaste' en la planilla 'vienen' de la barra de herramientas 'formularios' -?-
y que el 'nuevo' nombre del libro [y su 'grabacion'] la haces con una instruccion del tipo: SaveAs -?-
[con lo cual, todas las macros 'generales' asignadas a objetos 'flotantes' son re/direccionadas al 'nuevo' libro] :-((

2) 'la pregunta' seria: -> el 'nuevo' libro... 'necesita' -tambien- hacer uso de las macros ???
-> y 'llevarse' -tambien- TODOS los botones ??? y los modulos con las macros ???
o... solo 'una parte' de ellos [botones y macros] -?- o... nada [de botones y macros] -?-

comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#10 Alejandro Garrammone
09/11/2005 - 21:47 | Informe spam
Veamos, te comento un poco más. Los botones no estan incrustados en la
planilla sino que estan incrustados en la barra de herramientas (como los
botones "guardar", "abrir", "imprimir", etc.
Si el problema surge, justamente porque las macros son 'generales', y hay
alguna manera para que no lo sean y esten específicamente asignadas sólo a
la planilla original ("presupuestos") entonces, dime como hacerlo y listo,
porque el usuario no va a utilizar los procedimientos una vez guardado el
presupuesto. ¿tiene que ver en algo con los módulos Públicos y Privados?
Gracias,

Alejandro

"Héctor Miguel" escribió en el mensaje
news:%
hola, Alejandro !

... nada que ver con este tema... una planilla que un usuario completa...
posee diferentes macros.
... el usuario carga... y presiona un boton que tiene asignada la macro
"guardarycerrar".
Cuando yo cree los botones les asigne las macros de la planilla
"presupuestos"
... cuando se ejecuta la macro, se guarda con otro nombre... tambien se
guarda con las macros
... con otro nombre... cambian las asignaciones de las macros a los
botones
... cuando uno vuelve a abrir la planilla presupuestos... las macros...
ahora se enfocan en pepito y no en presupuestos [...]



1) 'asumo' que los botones que 'incrustaste' en la planilla 'vienen' de la
barra de herramientas 'formularios' -?-
y que el 'nuevo' nombre del libro [y su 'grabacion'] la haces con una
instruccion del tipo: SaveAs -?-
[con lo cual, todas las macros 'generales' asignadas a objetos
'flotantes' son re/direccionadas al 'nuevo' libro] :-((

2) 'la pregunta' seria: -> el 'nuevo' libro... 'necesita' -tambien- hacer
uso de las macros ???
-> y 'llevarse' -tambien- TODOS los botones ??? y los modulos con
las macros ???
o... solo 'una parte' de ellos [botones y macros] -?- o... nada
[de botones y macros] -?-

comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida