Como ejecutar formulario con F1 de celda

Experta Srta. Elsa Matilde

Como llamo desde una celda "L4 a L15" con la tecla F1, a un formulario para buscar datos y seleccionar dato y copiar en la celda donde precione la tecla.

1 respuesta

Respuesta
1

Disculpa la demora pero el sitio no estuvo disponible para enviar respuestas.

Para esto necesitas programar el evento ONKeys ya sea en la apertura de tu libro (evento Open) o en el evento Activate del mismo (si vas a trabajar con 2 libros).

Luego tendrás que quitarle la asignación a esas teclas ya sea en el evento BeforeClose o Deactivate según cómo activaste en el punto anterior.

La lista de teclas se pueden encontrar en el sitio de Microsoft Office:https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey

Estos serían los códigos para activar/desactivar el atajo. En mi ejemplo se activa al entrar/salir de la hoja.

Private Sub Worksheet_Activate()
Application.OnKey "{RIGHT}", "llamaUF"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{RIGHT}"
End Sub

Y en algún módulo la macro LlamaUF:

Sub llamaUF()
'solo se ejecutará si se llamó desde celdas L4:L15
If Selection.Count > 1 Then Exit Sub
If ActiveCell.Row < 4 Or ActiveCell.Row > 15 Then Exit Sub
If ActiveCell.Column <> 12 Then Exit Sub
UserForm1.Show
End Sub

Gracias por la respuesta, Srta. Elsa

1. ---> cuando la macro esta en: ThisWorkbook

La macro se ejecuta bien, pero se ejecuta o afecta a todos las hojas y libros abiertos, la macro solo debe ejecutarse en una sola hoja "Hoja1" de un libro especifico. 

Private Sub Workbook_Open()
Application.OnKey "{F1}", "llamaUF"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{F1}"
End Sub

2. ---> Cuando la macro esta en: Hoja1.

Al abrir el excel de frente en la hoja1, la macro no se activa.

Cuando esta activo la macro y la hoja1 y paso a otro libro tambien se ejecuta la macro en otro libro.

una vez cerrado el libro donde contiene la macro, pues en otro libro lo ejecuto F1 y se abre el archivo excel que contiene la macro.

Espero me entienda, gracias por tanta amabilidad...

Private Sub Worksheet_Activate()
Application.OnKey "{F1}", "llamaUF"
End Sub

Private Sub Worksheet_Deactivate()
Application.OnKey "{F1}"
End Sub

Saludos cordiales.

Bien, con más información se puede precisar el código que necesitas. Efectivamente si colocas el código en el evento Open es para todas las hojas del libro.

Ahora, estás indicando que se tratará solo de la hoja XXXX y que será la hoja que se activa al abrir el libro. Y que además es posible que abras otros libros mientras.

Entonces tendrás que programar los siguientes eventos del libro (ThisWorkbook):

Private Sub Workbook_Activate()             'al abrir o activar este libro
If ActiveSheet.Name = "Hoja1" Then          'ajustar el nombre de la hoja
    Application.OnKey "{RIGHT}", "llamaUF"  'ajustar el nombre de la macro y la tecla
End If
End Sub
Private Sub Workbook_Deactivate()        'al cambiar de libro o cerrarlo
Application.OnKey "{RIGHT}"              'ajustar el nombre de la tecla
End Sub

Además desde este objeto Libro controlarás el ingreso o salida de la hoja XXXX, con las siguientes macros:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Hoja1" Then Application.OnKey "{RIGHT}", "llamaUF"
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Hoja1" Then Application.OnKey "{RIGHT}"
End Sub
'Ajustar nombre de hoja, de tecla y de la macro 

Sdos y no olvides valorar la respuesta.

Elsa

https://www.youtube.com/channel/UCSftX2GNQiTDDm0C6H9wEVA/ 

Buenas Tardes,

Srta, Elsa

Excelente su aporte muchísimas gracias, para finalizar un ultimo consulta en este tema...

Como cerrar el formulario abierto con la tecla "ESC".

Que la tecla Esc, funcione con el formulario, por más que puedo aumentar más objetos.

Lo siento pero cada tema debe ir por separado en Nueva consulta luego de finalizada ésta y con mucho gusto te las iré respondiendo.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas