Excel - Creare una barra dei pulsanti in Visual Basic Application (VBA)

Creazione di una barra dei pulsanti in VBA.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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