Index der CommandBars

Hallo Experten,

jede CommandBars hat doch einen Index, damit Excel weiß was los ist.
Gibt es eine Aufstellung der Indexe, b.z.w. suche ich den Index speziell für CommandBars(„Clipboards“). Wer kennt die Zahlenwerte der einzelnen CommandBars b.z.w. wo kann man diese finden, oder teilt Excel den Index ( je nachdem was aktiviert ist ) jedesmal neu ein ?
Wer Weiss Was ?

Gruß Peter

Sub test()
 Call ListCommanBars
 Call ListCommanBars("System")
End Sub 'test


Sub ListCommanBars(Optional Name As String)
Dim cb As CommandBar
 If Name "" Then
 Set cb = Application.CommandBars(Name)
 MsgBox cb.Index & ": " & cb.Name
 Else
 For Each cb In Application.CommandBars
 Debug.Print cb.Index & ": " & cb.Name
 Next cb
 End If 'Name ""
End Sub 'ListCommanBars

Kristian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Kristian,

Sternchen verdient. Gibt es eine Subroutine dir mir alle installierten CommandBars zurück gibt? Dies sollte natürlich nicht über die MsgBox geschehen, sondern in die ActiveSheet übertragen werden. An Sternchen solls nicht mangeln.

Dankbarer Gruß
Peter

So geht´s
Moin Ratz,

(fast) genau das macht die Routine ja. Hast Du vielleicht nicht gesehen.

Leider hatte ich vergessen, für Leerzeilen zwischen den beiden Prozeduren zu sorgen, aber in der ersten wird die zweite auf zwei verschiedene Varianten aufgerufen:

Sub test()
 Call ListCommanBars
 Call ListCommanBars("System")
End Sub 'test

Variante 1 (ohne Parameter) sorgt dafür, dass alle CommandBars aufgelistet werden, und zwar im Direkt-Fenster (Debug.Print). Das sieht man allerdings nur, wenn man sich im VBA-Editor befindet und das Fenster eingeschaltet ist ([Strg]+[g]).

Das was Du jetzt brauchst ist folgendes:

Sub test()
 Call AlleCommanBarsEintragen
 Call AlleCommanBarsEintragen("D5")
End Sub 'test
 

Sub AlleCommanBarsEintragen(Optional StartZelle As String)
Dim cb As CommandBar
Dim x As Long
Dim y As Long
 
 'Falls kein Parameter: In Zelle A1 beginnen
 If StartZelle = "" Then StartZelle = "A1"

 x = Range(StartZelle).Column
 y = Range(StartZelle).Row

 For Each cb In Application.CommandBars
 Cells(y, x + 0).Value = cb.Index
 Cells(y, x + 1).Value = cb.Name
 y = y + 1
 Next cb
End Sub 'AlleCommanBarsEintragen

Das Schema ist das gleiche: Der erste Aufruf in test() erfolgt ohne Parameter, so dass die Nummern ab Zelle A1 geschrieben werden. Der zweite Aufruf sorgt für den Start in D5.

Kristian

Sternchen verdient. Gibt es eine Subroutine dir mir alle
installierten CommandBars zurück gibt? Dies sollte natürlich
nicht über die MsgBox geschehen, sondern in die ActiveSheet
übertragen werden. An Sternchen solls nicht mangeln.

Dankbarer Gruß
Peter

1 „Gefällt mir“

Sorry, meinte natürlich ‚Peter‘, nicht ‚Ratz‘! owT

Moin Ratz,

o.w.T.

Hallo Kirsten,

Wahnsinn was so alles geht. Vielen Dank dafür.

Dankesgruß Peter

Und wir kratzen nur an der Oberfläche … :wink: owT

Wahnsinn was so alles geht. Vielen Dank dafür.

owT