In questo articolo, vedremo come in Microsoft Excel, tramite il linguaggio di programmazione Visual Basic application, è possibile creare una barra dei pulsanti.
Se vogliamo inserire nelle nostre applicazione Excel, delle barre personalizzate con dei pulsanti, che eseguono determinati funzioni, dobbiamo utilizzare l'oggetto CommandBars che fa parte dell'oggetto Application.
Prima di tutto si crea un modulo bas, in cui sarà inserita la funzione per la creazione delle barra. Tale funzione sarà richiamata nell'evento di apertura del foglio excel.
Di seguito si riporta il listato del codice di esempio.
Public Sub CreaBarra() 'per creare una barra strumenti personalizzata
On Error Resume Next
'cancello la barra qualora già esista
Application.CommandBars("Menu").Delete()
'creo la barra e imposto alcune proprietà
With Application.CommandBars.Add("Menu", msoBarTop, MenuBarBool, True)
.Visible = True
.Position = msoBarTop
.Protection = msoBarNoChangeVisible + msoBarNoCustomize
'aggiungo due pulsanti ed imposto le proprietà
With .ControlsWith .Add(msoControlButton)'testo del pulsante
.Caption ="Avanti"
.Style = msoButtonIconAndCaption
'icona di office
.FaceId = 41
'nome funzione
.OnAction =
"fAvanti"
End With
With .Add(msoControlButton)'testo
.Caption ="Indietro"
.Style = msoButtonIconAndCaption
'icona di office
.FaceId = 40
'nome funzione che viene richiamata nell'evento click sul pulsante
.OnAction ="fIndietro"
End With
End With
End With
End Sub
Fatto ciò, dobbiamo creare due funzione che verranno richiamate al click dei pulsanti. Tali funzioni visualizzano dei messaggi. Il codice è riportato qui di seguito.
Sub fIndietro()
MsgBox("Vai indietro")
End Sub
Sub fAvanti()
MsgBox("Vai avanti")
End Sub
Ora nell'evento Workbook_Open della nostra cartella (ThisWorkbook) di lavoro, dobbiamo avviare la funzione di creazione della barra, questo evento viene scatenato quando si apre excel.
Private Sub Workbook_Open()
Call CreaBarra
End Sub
Mentre nella chiusura del foglio excel, bisogna eliminare tale barra, utilizzando il metodo delete dell'oggetto commandbar si elimina la barra, da inserire nell'evento beforeclose. Di seguito si riporta il frammento di codice
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Menu").Delete
End Sub