pressione tasto tastiera



  • pressione tasto tastiera
    di Textomb data: 04/07/2013 08:44:37

    Salve a tutti.
    Il foglio1 è attivo. Mi trovo, per es, nella cella A1
    Quello che dovrei fare è.
    Alla semplice pressione del tasto "A" della tastiera deve mostrarsi la userform1
    Alla semplice pressione del tasto "B" della tastiera deve mostrarsi la userform2
    Senza dovergli dare l'invio.
    come posso procedere?
    grazie mille.



  • di Textomb data: 04/07/2013 08:49:08

    Ovviamente, una userform alla volta.
    Cioè.
    Alla pressione del tasto "A" il controllo passa alla userform1. Dalla userform1, dopo aver fornito le informazioni necessarie, si torna al foglio1 ed alla cella A1 e cioè alla configurazione di partenza.
    Quindi se premo il tasto "B" il controllo passa alla userform2. E così via...



  • di Vecchio Frac data: 04/07/2013 09:20:58

    Dunque, io sto guardando adesso application.onkey, secondo me è fattibile ma bisogna gestirlo con cautela.
    Provo e vediamo cosa ne ottengo.





  • di Vecchio Frac data: 04/07/2013 09:46:14

    Ecco qui.
    Meglio di così non son riuscito a fare.
    Chiaramente devi aggiustare i nomi degli oggetti (foglio1 e userform) come conviene.
     
    'in un modulo
    Option Explicit
    
    Sub show_form1()
    'procedura invocata alla pressione del tasto A in foglio1: mostra userform1
        'intercetta la pressione di A solo in cella A1 del foglio1
        If LCase(ActiveCell.Parent.Name) <> "foglio1" Then Exit Sub
        If ActiveCell.Address <> "$A$1" Then Exit Sub
        UserForm1.Show vbModal
    End Sub
    
    Sub show_form2()
    'procedura invocata alla pressione del tasto B in foglio1: mostra userform2
        'intercetta la pressione di A solo in cella A1 del foglio1
        If LCase(ActiveCell.Parent.Name) <> "foglio1" Then Exit Sub
        If ActiveCell.Address <> "$A$1" Then Exit Sub
        UserForm2.Show vbModal
    End Sub
    
    
    
    'in ThisWorkbook
    Option Explicit
    
    Private Sub Workbook_Open()
    'all'attivazione del foglio attuale predispone Excel affinchè premendo A venga visualizzato Userform1 e
    'premendo B venga visualizzato Userform2; viene anche aggiornata la statusbar
        With Application
            .OnKey "A", "show_form1"
            .OnKey "a", "show_form1"
            .OnKey "B", "show_form2"
            .OnKey "b", "show_form2"
            .StatusBar = "Premi A per aprire userform1, B per aprire userform2"
        End With
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'ripristina la barra di stato al valore predefinito e le normali funzioni dei tasti A e B
        With Application
            .StatusBar = False
            .OnKey "A"
            .OnKey "a"
            .OnKey "B"
            .OnKey "b"
        End With
    End Sub
    






  • di Textomb data: 04/07/2013 12:11:20

    Direi semplicemente PERFETTO!
    Application.OnKey. Non l'avevo mai usato. Ma era quello che volevo.
    Pensavo di aver trovato un limite. Mi sbagliavo!!!
    Grazie VF.