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 ?
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]
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.
(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.