Todos los libros heredan OnKey

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Todos los libros heredan OnKey

Notapor ci2000 » 14 Ene 2012 09:18

Hola.
Hice una macro en un libro dónde llamo al procedimiento Macro_Enter al presionar la tecla ENTER.

Código: Seleccionar todo
Application.OnKey "{RETURN}", "Macro_Enter"


Luego de cerrar este libro (sin salir de Excel) creo otro libro nuevo, sucede que al presionar ENTER sigue ejecutándose la macro.

La única forma de que no se ejecute esta macro en otros libros es salir de Excel y recién ahí creo el otro libro.

¿De qué manera puedo hacer para que la macro se ejecute sólo en un determinado libro?

Gracias desde ya por las respuestas.
Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
ci2000
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Nov 2011 22:51

Re: Todos los libros heredan OnKey

Notapor Héctor Miguel » 14 Ene 2012 15:32

hola, !

1) OnKey permanece en efecto, aun despues de cerrado el libro, hasta que sucede una de dos cosas:
a) que se re-inicie la aplicacion (excel)
b) que se modifique o cancele la re-asignacion de teclas por otra instruccion OnKey

2) cerrado "el libro", si el metodo no se ha cancelado (o re-iniciado excel) el libro se vuelve a abrir por efecto de la llamada a "su" macro

3) existen al menos dos formas de que una macro se ejecute solo para un determinado libro, para este caso te sugiero usar la segunda:

a) usa como primera instruccion en "la macro" (asignada) algo +/- como lo siguiente:
if activeworkbook.name <> thisworkbook.name then exit sub

b) programa el metodo (OnKey) en el evento Workbook_WindowActivate (del objeto ThisWorkbook) y CANCELAS la asignacion de las teclas en el evento Workbook_WindowDeactivate

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Todos los libros heredan OnKey

Notapor ci2000 » 14 Ene 2012 16:58

Gracias por responder Héctor Miguel.

Hice lo que me sugeriste utilizando la segunda opción:

Código: Seleccionar todo
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
     Application.OnKey "{RETURN}", "Macro_Enter"
     Application.OnKey "{TAB}", "Macro_Enter"
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
     Application.OnKey "{RETURN}", ""
     Application.OnKey "{TAB}", ""
End Sub


La cancelación de las teclas surtió efecto. El problema es que ahora en el nuevo libro la tecla ENTER no pasa de celda en celda cómo normalmente lo debería hacer en cualquier otro libro. Es decir, si presiono ENTER en el libro dónde está la macro hace lo que programé en el procedimiento Macro_Enter, pero en otros libros al dar ENTER se queda siempre en la misma celda.

Gracias desde ya por las respuestas.
Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
ci2000
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Nov 2011 22:51

Re: Todos los libros heredan OnKey

Notapor Héctor Miguel » 14 Ene 2012 20:52

hola, !
Hice lo que me sugeriste utilizando la segunda opción:
Código: Seleccionar todo
...
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
     Application.OnKey "{RETURN}", ""
     Application.OnKey "{TAB}", ""
End Sub

La cancelación de las teclas surtió efecto. El problema es que ... en otros libros al dar ENTER se queda siempre en la misma celda

OJO: consulta la ayuda en linea {F1} desde vba de excel, en relacion con el metodo OnKey, lo que estas indicando en el evento '_windowdeactivate' es (precisamente) que no haga nada (macro asignada: una cadena de texto vacia, es igual a una re-asignacion para que "las teclas" no hagan nada)

la cancelacion se hace indicando la/s tecla/s re-asignada/s SIN el segundo argumento (macro asignada)

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot], Google [Bot] y 8 invitados