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 With

With .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 With

With .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