Lista alla vertygsfälts kontrollers
namn och ID-nummer

 

Om vi arbetar med olika språkliga versioner av Excel, såsom svensk och engelsk, så har verktygsfälten olika namn i respektive version. Det har också de underliggande kontrollerna/menyalternativen.

Istället för att referera till kontrollers namn så är det att föredra att referera till deras ID-nummer istället.

Här demonstreras ett förfaringssätt för att få fram alla verktygfälts indexnummer och alla kontrollers ID-nummer. Därmed får vi en förteckning på ett arbetsblad, vilken vi kan nyttja vid flera tillfällen.

Se också följande tips
Lista alla verktygsfält...

För att se ett exempel som baseras på ID-nummer mm se Infoga egna menyalternativ...

Option Explicit  

Sub Lista_Alla_Verktygsfält_Kontrollers_NamnIDnr()

   '© 2002 Alla rättigheter XL-Dennis

   Dim cbVFalt As CommandBar

   Dim cbKontroll As CommandBarControl

   Dim RnCell As Range

 

   With Application

      .ScreenUpdating = False

      .DisplayAlerts = False

   End With

 

   On Error Resume Next

   With ActiveWorkbook

      .Worksheets("Menynamn och ID-nummer").Delete

      .Worksheets.Add

   End With

    ActiveSheet.Name = "Menynamn och ID-nummer"

    Set RnCell = Range("A1")

 

   For Each cbVFalt In Application.CommandBars

      'Här skrivs verktygsfältens namn och indexnummer ut.

      With RnCell

         .Font.Bold = True

         .Value = cbVFalt.NameLocal & " " & "ID-nr:" & cbVFalt.Index

      End With

      For Each cbKontroll In cbVFalt.Controls

         Lista_Kontroller RnCell, cbKontroll

      Next cbKontroll

   Next cbVFalt

 

   Columns("A:B").EntireColumn.AutoFit

    With Application

      .ScreenUpdating = True

      .DisplayAlerts = True

   End With

End Sub

 

Sub Lista_Kontroller(rnMal As Range, cbKontroll As CommandBarControl)

   '© 2002 Alla rättigheter XL-Dennis

   Dim cbKontroller As CommandBarControl

    On Error GoTo Felhantering:

    Set rnMal = rnMal(2, 1)

    'Här skrivs kontrollernas namn och ID-nr ut för respektive vertygsfält.

   rnMal.Value = cbKontroll.Caption

   rnMal(1, 2).Value = cbKontroll.ID

 

   For Each cbKontroller In cbKontroll.Controls

      Lista_Kontroller rnMal, cbKontroller

   Next cbKontroller

 Felhantering:

   'För att komma ur For Each-satsen...

End Sub