3.3k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo Leute,

ich bin hier wirklich am Rätseln, aber ich bekomme es einfach nicht ein, eine neues Registerkarte in das Standard-EXCEL-Menüband über VBA einzufügen. Ich nutze die 2013er Version von VBA, falls das von Interesse sein sollte.

mein Code hierfür sieht folgendermaßen aus:


Private Sub Workbook_Open()
Dim cbMenu As CommandBar
Dim cbSpecial As CommandBarPopup
Dim cbButton As CommandBarButton

Set cbMenu = Application.CommandBars("Worksheet Menu Bar")
Set cbSpecial = cbMenu.Controls.Add(Type:=msoControlPopup)

cbSpecial.Caption = "Mein Menü"

Set cbButton = cbSpecial.Controls.Add(Type:=msoControlButton)

cbButton.Caption = "Mein Button"
cbButton.OnAction = ""

cbSpecial.Visible = True
cbButton.Visible = True
End Sub


Die beiden letzten Zeilen habe ich eingefügt, weil ich nicht wusste ob es vielleicht daran liegt, dass er mir das Menü nicht anzeigen lassen will (offenbar aber nicht)

Vielleicht kann mir jemand von euch weiterhelfen, da ich ein Makro brauche, welches mir Menüs über VBA erstellt.

Liebe Grüße

3 Antworten

0 Punkte
Beantwortet von
Leider habe ich bislang keine Antwort erhalten :(.

Habe mal ein wenig weiter getestet mit den Menüs und habe meinen Code nochmal entsprechend umgeshchrieben.

Das sieht nun so aus:


Private Sub Workbook_Open()
Dim bar As CommandBar
Dim button As CommandBarButton ' neue Menüleiste

'Set bar = Application.CommandBars("Worksheet Menu Bar") ' neue Menüleiste = Standard-Menüleiste
Set bar = Application.CommandBars.Add(Name:="Hallo")
Set button = bar.Controls.Add(Type:=msoControlButton)

With button
.Caption = "Test"
End With

Debug.Print bar.Name
Debug.Print button.Caption
End Sub


Er zeigt mir zwar an, dass er das angeblich anlegt. Allerdings zeigt er mir das Menü partout nicht an und ich weiß einfach nich, woran es liegt.

Hier auch nochmal die Löschen-Methode:


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim bar As CommandBar
Dim button As CommandBarButton

For Each bar As Application.CommandBars
If Not bar.BuiltIn Then
bar.Delete
button Delete
Next bar

MsgBox "Gelöscht!", vbInformation, "Hinweis"
End Sub


Scheinbar löscht er es auch entsprechend.

Bitte liebe VBA-Enthusiasten. Es muss doch jemanden geben, der mir da weiterhelfen kann.
0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Die alten CommandBar Methoden sind seit Einführung der Ribbons (mit Office 2007) nicht mehr richtig unterstützt. Wenn überhaupt, dann werden solche mit "altem" Code erzeugten Menüelemente auf der Registerkarte "Add-Ins" angezeigt.

Seit Office 2007 funktioniert das jetzt über eingebundenen XML-Code. Am einfachsten geht es, wenn man dazu ein spezialisiertes Tool verwendet, z.B. dieses hier:

www.ribboncreator2013.de/?RibbonCreator_2013

Für einfache Sachen reicht die Shareware-Version. Zitat:
"Die Shareware Version ist auf zwei Tabs, drei Groups und zehn Controls beschränkt."

mfg, Massaraksch
0 Punkte
Beantwortet von
Na geil -.-. Und warum steht sowas mal wieder nicht auf der offiziellen Microsoft-Seite? BTW: Die Hilfe dort ist sowieso alles andere als hilfreich.

Aber ich danke dir erstmal sehr herzlich für den Tipp :)
...