Skapa verktygsfält för specifika cellområden
I detta exempel visas hur vi relativt enkelt kan skapa ett s k pop-up verktygsfält för ett begränsat cellområde.
Antag att vi har ett cellområde där vi vill utföra vissa kommandon. Dessa kommandon vill vi nå när vi högerklickar inom cellområdet.
Följande kod placeras i "ThisWorkbook- / DennaArbetsbok"-modul.
Option Explicit
Private Sub Workbook_Open()
Call Skapa_Verktygsfält
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("XL-PopUp").Delete
End Sub
Här skapas verktygsfältet som ska kopplas till cellområdet.
Option Explicit
Sub Skapa_Verktygsfält()
'Felhanteringsrutin
On Error Resume Next
Application.CommandBars("XL-PopUp").Delete
On Error GoTo 0
'Här styrs verktygsfältet tillhörighet genom att sätta egenskapen
'Position till msoBarPopup
With Application.CommandBars.Add(Name:="XL-PopUp", Position:=msoBarPopup)
With .Controls.Add(Type:=msoControlButton)
.Caption = "Test"
.OnAction = "Procedurnamn som ska köras"
.FaceId = 343
End With
With .Controls.Add(Type:=msoControlPopup)
.Caption = "Analys"
With .Controls.Add(Type:=msoControlButton)
.Caption = "Vertikal analys"
.FaceId = 70
.OnAction = "Analys_Vertikalt"
End With
With .Controls.Add(Type:=msoControlButton)
.Caption = "Horisontel analys"
.FaceId = 71
.OnAction = "Analys_Horisontellt"
End With
End With
End With
End SubSlutligen knyts verktygsfältet till det önskade cellområde, vilket sker i den önskade arbetsbladmodulen.
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
'Här undersöks huruvida aktiv cell är inom cellområdet eller inte. Om inte
'så visas den vanliga menyn.
If Not Intersect(Range("CellOmråde"), Target) Is Nothing Then
Application.CommandBars("XL-PopUp").ShowPopup
Cancel = True
End If
End SubResultatet av ovanstående procedurer och vid högerklick inom cellområdet blir följaktligen:
![]()