Bladnavigering
I detta tips visas hur vi relativt enkel kan skapa ett verktygsfält för navigering i en arbetsbok, dvs förflytta sig snabbt i t ex arbetsböcker med många arbetsblad.
Därutöver demonstreras också några egenskaper för objektet "ControlButton".
Se också Navigering bland dolda arbetsblad
Det färdiga resultatet av dessa procedurer är följande verktygsfält:
Koden som skapar verktygsfältet är här kopplad till händelsen Workbook_Open():
Private Sub Workbook_Open() '© 2001 Alla rättigheter XL-Dennis
On Error Resume Next
Application.CommandBars("Navigering").Delete
On Error GoTo 0
With Application.CommandBars.Add("Navigering © XL-Dennis", , False, True)
With .Controls.Add(msoControlButton)
.Style = msoButtonCaption
.Caption = "Navigering"
.TooltipText = "Info om navigeringsverktyget"
.OnAction = "Ingen procedur är kopplad!"
.BeginGroup = True
End WithWith .Controls.Add(msoControlButton)
.TooltipText = "Föregående blad"
.FaceId = 1017
.OnAction = "Foregaende_Blad"
.BeginGroup = True
End With
'Här skapar vi menyn för att välja arbetsblad
With .Controls.Add(msoControlDropdown)
.AddItem "Blad1"
.AddItem "Blad2"
.AddItem "Blad3"
.TooltipText = "Bladnavigering"
.OnAction = "Blad_Navigering"
End WithWith .Controls.Add(msoControlButton)
.TooltipText = "Nästa blad"
.FaceId = 1018
.OnAction = "Nasta_Blad"
End With
With .Controls.Add(msoControlButton)
.Style = msoButtonIconAndCaption
.Caption = "Info om XL-Dennis"
.TooltipText = "Info om XL-Dennis"
.FaceId = 629
.OnAction = "Ingen procedur är kopplad"
.BeginGroup = True
End With
.Protection = msoBarNoCustomize
.Position = msoBarFloating
.Visible = True
End With
End Sub
För att få en händelse utförd till de angivna valen enligt ovan skapas följande kod:
Private Sub Blad_Navigering()
Dim stAktivtBlad As String
'Här fångar vi upp det valda alternativet
With CommandBars.ActionControl
stAktivtBlad = .List(.ListIndex)
End With
'För att slutligen styra aktivering av önskat blad
Select Case stAktivtBlad
Case "Blad1"
Worksheets("Blad1").Activate
Case "Blad2"
Worksheets("Blad2").Activate
Case "Blad3"
Worksheets("Blad3").Activate'Har vi diagramblad refereras de till "Sheets"
End Select
End Sub'Växla till föregående blad med felhantering
Private Sub Foregaende_Blad()
On Error Resume Next
ActiveSheet.Previous.Select
End Sub'Växla till nästa blad med felhantering
Private Sub Nasta_Blad()
On Error Resume Next
ActiveSheet.Next.Select
End Sub