'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
|