Como mostrar formularios con tecla de funciones en excel

Tengo un formulario principal con 3 commad button y cada uno de ellos tengo asignado un formulario.

pero necesito que se muestre el formulario con las teclas {f4}, {f10}, {f3} para cerrar el formulario {esc}

Muy agradecido!

1 respuesta

Respuesta
2

H o l a:

Pon la siguiente macro en los eventos de tu libro:

Private Sub Workbook_Open()
'Por.Dante Amor
    Application.OnKey "{F4}", "AbrirUserForm"
    Application.OnKey "{F10}", "AbrirUserForm"
    Application.OnKey "{F3}", "AbrirUserForm"
End Sub

No entendí por qué 3 teclas para abrir el formulario. Si solamente quieres abrir el formulario con F4 entonces quedaría así:

Private Sub Workbook_Open()
'Por.Dante Amor
    Application.OnKey "{F4}", "AbrirUserForm"
End Sub


En un módulo pon la siguiente macro:

Sub AbrirUserForm()
'Por.Dante Amor
    UserForm3.Show
End Sub

Cambia UserForm3 por el nombre de tu formulario


Para cerrar el formulario, pon lo siguiente dentro del código de tu userform

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Por.Dante Amor
    If KeyAscii = 27 Then
        Unload Me
    End If
End Sub

Dante el código funciona perfecto.

pero el asunto es que tengo un formulario principal y a través de ello llamo a sub formularios con commandbutton saludos!!

Pon lo siguiente en tu formulario1, cuando el formulario1 esté activo y presionas F4 se abre el formulario2, si presionas F10 se abre el formulario3, si presionas F3 se abre el formulario4.

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 115: UserForm2.Show    'F4
        Case 121: UserForm3.Show    'F10
        Case 114: UserForm4.Show    'F3
    End Select
End Sub

sal u dos

Te envío el archivo Dante saludos!!

No me funca

Hay que crear una rutina para seleccionar el formulario, eso es porque cualquier comandbutton puede tener el foco, es decir, cualquier botón puede estar activo, entonces cualquier botón que esté activo, se ejecutará la rutina SeleccionarForm y le pasará como dato el número de tecla que fue presionado.

Sub SeleccionarForm(KeyCode)
'Por.Dante Amor
    Select Case KeyCode
        Case 115: FrmRegistro.Show    'F4
        Case 121: FrmMultas.Show    'F10
        Case 114: FrmPagos.Show    'F3
    End Select
End Sub
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    SeleccionarForm KeyCode
End Sub
Private Sub CommandButton2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    SeleccionarForm KeyCode
End Sub
Private Sub CommandButton3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    SeleccionarForm KeyCode
End Sub
Private Sub CommandButton4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    SeleccionarForm KeyCode
End Sub
Private Sub CommandButton5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    SeleccionarForm KeyCode
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas