Crearsi Menù personalizzati usando UserForm. -
dal 04/09/04 pagina vista:
volte
Prendo spunto da
un'ennesima domanda sui menù personalizzati, per puntualizzare una volta per
tutte il mio pensiero:
Sono profondamente
contrario a modifiche sulle barre strumenti. A casa propria ognuno fa ciò
che gli aggrada, ma non può imporre ad altri delle sue scelte, ed è quanto
succede se inviate o passate un vostro file con istruzioni che prevedano
inserimenti o comunque modifiche alle barre standard di Excel.. Provare una
routine che modifica le mie barre mi manda in bestia, soprattutto quando non
si prevede, all'uscita da Excel, il
ripristino delle precedenti barre. Mi domando però come può un'estraneo,
conoscere come mi sono, (o vi siete), impostato i menù per poterli poi
ripristinare. Sì, perchè dovete sapere, che se vi mettete a trafficare con barre
e menù personalizzati, le modifiche effettuate via codice sui menù,
poi restano su Excel anche in seguito.
Anzichè proseguire
sulle mie ragioni, lanciando anatemi a chi osa modificare i miei menù (ma
anche i vostri se non siete d'accordo), mi permetto di suggerire una maniera
per ottenere dei menù personalizzati, senza che nessuno incorra in ire o
frustrazioni, e soprattutto senza apportare modifiche ai menù esistenti. Una
cosa del genere pensate che vi potrebbe andar bene, o voi "pistolettari" dei
"menù fai da te" ?
Spero di si,
quella che vedete sopra è una Barra ottenuta con una UserForm, comunque vediamo come "operare":
-
aggiungere una
UserForm al progetto, dimensionandola in larghezza ed altezza, e scegliendo,
se volete un colore di fondo che vi aggrada, facendola apparire all'apertura
del foglio di lavoro, sfruttando l'evento Open del Workbook, così:
-
Private Sub Workbook_Open()
UserForm1.Show 'nome della userform da
aprire
End Sub
-
impostare la
proprietà ShowModal della UserForm a
False. Con ShowModal
impostata a True (di default è True) NON è
possibile togliere il focus dalla userform, ovvero non è possibile
utilizzare nè il foglio di lavoro, nè i vari menù di Excel. La Versione 97
di Excel non accetta l'impostazione a False, e quindi queste note non sono
usabili con questa versione.
-
impostare due
istruzioni, sfruttando l'evento Activate della
UserForm, che servono a determinare in quale
punto dello schermo visualizzare la stessa UserForm. E' necessario usare due
proprietà della UserForm, la Top e
Left, che determinano la distanza tra la
UserForm e il bordo superiore (Top) e il bordo sinistro (Left) della
finestra che la contiene. L'esempio che vediamo sopra, ha queste
impostazioni:
-
Private Sub UserForm_Activate()
Top = 5
'5 e 15 sono i valori Single che determinano le
distanze
Left = 15
End Sub
-
ognuno potrà
regolando questi valori, posizionare la userform dove più preferisce, la
scelta dei valori dipende sia dalla dimensione della userform, sia dalla
risoluzione schermo tenuta.
-
una volta
posizionata la userform , resterà visibile qualunque foglio si selezioni,
rendendo sempre possibile l'utilizzo dei pulsanti e dello loro routines. Al
tempo stesso è possibile spostare la UserForm, per raggiungere le zone dei
menù sottostanti.
Appare evidente
che questa soluzione, permette di personalizzare al massimo i pulsanti,
potremo agire infatti su:
-
colore di fondo
del CommandButton, sfruttando la proprietà
BackColor
-
inserire sul
CmdButton l'icona che più ci piace,
sfruttando la proprietà Picture e selezionando
il percorso che mira all'icona o a un'immagine.
-
oppure sfruttare
la proprietà Font del
CmdButton per determinare il tipo di carattere e sua dimensione, nel
caso si voglia usare la proprietà Caption del
CmdButton per inserire testo.
-
inoltre è
possibile sfruttare la proprietà ControlTipText
del CmdButton per scrivere testo che
apparirà quando posizioneremo il mouse sul CmdButton,
indicando la funzione o l'azione ottenibile con quel pulsante ( il
VAI A
MAGAZZINO visibile nell'immagine sopra)
-
oppure ancora,
anzichè usare commandbutton, potrete usare delle Label (etichette), o
ComboBox per avere come un menù a discesa, insomma, usate un pò di fantasia
per personalizzare la vostra barra dei menù.
-
Un ultima cosa: se
volete che nessuno possa chiudere la UserForm sfruttando la X di chiusura,
mettete questa istruzione nell'evento QueryClose della UserForm
-
Private Sub UserForm_QueryClose(Cancel As Integer,
CloseMode As Integer)
Cancel = True 'questo impedisce alla form
di venire chiusa
End Sub
Se vi ho suggerito
una buona idea, meglio.
Buon lavoro.
prelevato sul sito
www.ennius.altervista.org
|