VBA Access: ¿Cómo asignar una combinación de teclas a un código específico?

Tengo un problema con el funcionamiento de ciertos códigos: a veces causan que los formularios se 'oculten' detrás de otros aún siendo 'emergentes' y 'modales'. Por ello, manualmente abro el editor VBA y ejecuto el código:

Sub CerrarForms()
Dim i As Integer
Dim FAbiertos As Integer
    FAbiertos = Forms.Count - 1
    For i = FAbiertos To 0 Step -1
        DoCmd.Close acForm, Forms(i).Name
    Next
    If MsgBox("Se han cerrado todas las ventanas." & vbLf & "¿Desea volver al Panel de Control?", 32 + 4, "Librero") = 6 Then Ventanas.PDC
End Sub

El problema es que, pensando en que alguien más lo use, no estará autorizado a ingresar al editor, por lo que quiero resolver esto ejecutando ese código mediante alguna tecla que lo active. Pensé en poner un botón en la cinta de opciones pero hasta esto queda inaccesible ante este error por lo que su ejecución queda fuera de posibilidad.

¿Hay alguna forma de asignar un código a cierta combinación de teclas y cómo podría ejecutarlo desde cualquier formulario?

1 Respuesta

Respuesta
1

Lo primero decirte que lo que hay que hacer es resolver el causante del problema, no las consecuencias del mismo.

Y de mientras buscas (y encuentras) porqué te ocurre ese desbarajuste de formularios abiertos, podrías probar con la macro AutoKeys.

La macro Autokeys te permiter asignar funciones a teclas.

¡Gracias!
Lo que he implementado es que, en el punto donde se produce el problema (solamente cuando finaliza la lectura mediante un TTS) se cierre la ventana y se vuelva a abrir. Pero, obviamente no se cierra, por ende no se vuelve a abrir. No estoy muy al tanto de otras soluciones y no encuentro info en la web.
Ya había probado AutoKeys pero no sé bien cómo implementarlo y donde encuentro información no es muy claro o no está al alcance de mi conocimiento. La información que encuentro en Internet no aplica a Access 2016 donde el editor de Macros cambió y no encuentro 'Nombre de macro'.
Así que probé crear la Macro nombrándola con ese código y luego una Macro AutoKeys donde llamo a la primera pero no responde al presionar las teclas.
Para más detalles:

Macro de acción:

+{F11}
Donde llama al código más arriba citado.

La macro AutoKeys ejecuta la Macro de arriba.

Si ejecuto la macro directamente con doble clic, funciona. Pero desde un formulario no responde. Ni siquiera asigándolo a "Al presionar una tecla".

¿Cómo puedo hacer?

Me sobra el +

Te adjunto un pantallazo de como la uso yo (la verdad es que macros no las uso para nada, solo el Autokeys, el Autoexec y para de contar).

Por cierto yo uso Access 2.010, pero no creo que para esto el 2.016 sea distinto.

El + es para que el comando sea [SHIFT]+[F11]. De todas formas, intenté sin el + también.
Sobre el screen es exactamente el mismo editor y es lo que hice pero igualmente no responde. ¿Será alguna configuración local en la PC o en Access? La verdad que ya no sé qué hacer.

El Shift no se puede asignar con Autokeys ...

Prueba primero con F11 sin lanzar ningún formulario. Simplemente pulsando F11 te debe funcionar.

He cambiado a F9 porque F11 expande o contrae el Panel de Navegación.

Y no responde ni aún teniendo todo cerrado.

El SHIFT si que lo coge, es la combinación de ALT más tecla de función la que no coge.

No te puedo decir más, en principio debe funcionar si o si, pero en el caso de que sea algo particular del office 2.016 no puedo comprobarlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas