Il Metodo OnKey.     (12/05/03)

Ovvero : come utilizzare dei tasti della tastiera per attivare (lanciare) le macro.

Può interessare prendere in esame un pratico sistema per il lancio delle nostre macro di una cartella di lavoro, usando i tasti della nostra tastiera. Sarà possibile usare sia un solo tasto (es: F3), sia una combinazione di tasti insieme ai tasti ALT, CTRL o MAIUSC (es: ALT+G).

Questo metodo è di semplice da capire; visto che OnKey si applica solo all'oggetto Application (Excel e la cartella di lavoro), potremo sfruttare l'evento WorkBook_Open perche si attivi l'istruzione, che resterà attiva da qualsiasi foglio poi si richiami premendo il tasto o la combinazione di tasti prescelta.. Cosa fa il metodo OnKey: tramite la pressione sul/sui tasti, richiama il nome di una macro, e la lancia. Il nome della macro va scritta tra due doppi apici. Vediamo subito l'esempio:

Su un modulo avremo una macro, semplice per esemplificare:

Sub pippo()

msgbox "Benvenuto"

End Sub

e questa sarà l'istruzione che la richiamerà, premendo il tasto F3

Private Sub Workbook_Open()
Application.OnKey "{F3}", "pippo"
End Sub

Volendo richiamare più di una macro, inseriremo tante istruzioni in WorkBook_Open per quanti tasti assegneremo. Fate solo attenzione a non usare i tasti che usa Excel come scorciatoie (F1, F6, F8 ecc.).

Precisazione: il metodo richiede che il nome del/dei tasti sia scritto tra due doppi apici e tra due PARENTESI GRAFFE, è importante, non usate le tonde perchè si genera un errore. Per ottenere le graffe, se non l'avrete sulla tastiera, le ottenete tenendo premuto il tasto ALT + 123 del tastierino numerico per la graffa aperta "{"  e ALT + 125 del t.n. per la graffa chiusa "}" . Vi riporto sotto, anche se trovate tutto sulla guida in linea, la tabella dei tasti

TASTO CODICE DA USARE

AIUTO
BACKSPACE
BLOC MAIUSC
BLOC NUM
BLOC SCORR
CANC
CANCELLA
da F1 a F15
ESC
FINE
Freccia DESTRA
Freccia GIÙ
Freccia SINISTRA
Freccia SU
HOME
INVIO
INVIO
INVIO (tastierino numerico)
INS
PAUSA
PGGIÙ
PGSU
TAB

{HELP}
{BACKSPACE} o {BS}
{CAPSLOCK}
{NUMLOCK}
{SCROLLLOCK}
{DELETE} o {DEL}
{CLEAR}
da {F1} a {F15}
{ESCAPE} o {ESC}
{END}
{RIGHT}
{DOWN}
{LEFT}
{UP}
{HOME}
{RETURN}
~ (tilde)
{ENTER}
{INSERT}
{BREAK}
{PGDN}
{PGUP}
{TAB}

È inoltre possibile specificare dei tasti in combinazione con MAIUSC e/o CTRL e/o ALT. Per specificare un tasto in combinazione con uno o più tasti, utilizzare la seguente tabella

Per specificare la combinazione con

Il codice del tasto deve essere preceduto da

MAIUSC
CTRL
ALT

+ (segno più)
^ (accento circonflesso)
% (simbolo di percentuale)

esempio: tasto Control + Freccia destra

Application.OnKey "^{RIGHT}", "pippo"

 

Esiste anche un altro metodo per "lavorare" con i tasti, ed è il metodo SendKeys. Però questo metodo presenta degli "inconvenienti", che anche altre persone ben più qualificate di me riconoscono imperfetto e fonte di incavolature da parte dell'utente. Inoltre anche la guida presenta un esempio che definirei "curioso" nel risultato. Provate per esempio questa istruzione, posizionata nell'evento WorkSheet_SelectionChange per comodità di verifica, ma potreste metterlo anche nel WorkBook_Open, il risultato non cambia. La guida riporta questo esempio, così scritto, per terminare Microsoft Excel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.SendKeys ("%fx")
End Sub

e quando cambierete selezione sul foglio di lavoro... si aprirà il sottomenu del menu File; il giusto comando invece è:

Application.SendKeys "%{F4}", True

 

Un'altro utilizzo che si fa del metodo Onkey, è anche quello di poter disabilitare tasti, o combinazioni di tasti, come in questo esempio in cui si disabilita la combinazione dei tasti CTRL+c  (Control Copia) per evitare di poter copiare il contenuto di una cella o range di celle da tastiera, e si può scegliere l'evento SelectionChange di un foglio:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "^c", ""  
'in pratica si annulla, si rende vuota (""), la combinazione ctrl+c
End Sub

Per ripristinare invece il comando, nel caso si rivoglia rendere attiva la combinazione di tasti scelta, basterà usare la stessa istruzione ma senza doppi apici, così:

Application.OnKey "^c"

 

Buon lavoro.


prelevato sul sito http://ennius.interfree.it