Herbers Excel-Forum - das Archiv

VBA-Code für Menuebar-Erweiterung

Bild

Betrifft: VBA-Code für Menuebar-Erweiterung
von: Rudolf

Geschrieben am: 04.03.2005 15:56:11
Hallo VBA-Profis,
ich würde gern die Excel Menueleiste um einen eigenen Menueeintrag mit Buttons und Untermenues erweitern. Anhand der von mir im Internet zusammengesuchten Code-Schnipsel kriege ich einen zusätzlichen Menueeintrag mit Buttons auch hin. Da ich aber keine VBA-Profi bin, will es mir einfach nicht gelingen, ein Untermenue per VBA zu erzeugen. Der Makrorecorder hilft mir auch nicht weiter. Wäre für Eure Hilfe sehr dankbar,
Rudolf.
Hier mein Code mit dem Problem zwischen den ??????
Private Sub Workbook_Open()
Dim cbMenu As CommandBar
Dim cbSpecialMenu As CommandBarPopup
Dim cbCommand As CommandBarControl
'Zuweisen der Objektvariablen
Set cbMenu = Application.CommandBars("Worksheet Menu Bar")
Set cbSpecialMenu = cbMenu.Controls.Add(Type:=msoControlPopup)
'Titelbeschriftung der Menubar
cbSpecialMenu.Caption = "Spezial"
'Einen Button hinzufügen und beschriften
Set cbCommand = cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "Leerzeichen entfernen"
cbCommand.OnAction = "leerzeichen_entfernen"
'Ein Untermenue hinzufügen und beschriften
Set cbCommand = cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "Rohrnetzliste"
'Dem Untermenue einen Button hinzufügen und beschriften
Set cbCommand = cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "Rohrnetzliste importieren"
cbCommand.OnAction = "Import_Rohrnetzdaten"
'Dem Untermenue noch einen Button hinzufügen und diesen gleich beschriften
Set cbCommand = cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "Rohrnetzliste speichern"
cbCommand.OnAction = "Save_Rohrnetzdaten"
End Sub

Bild

Betrifft: AW: VBA-Code für Menuebar-Erweiterung
von: Koenig W.

Geschrieben am: 04.03.2005 17:06:28
Hallo Rudolf
hier ein Schnippsel aus einem meiner Menues
evtl. kannst Du auch noch das Löschen gebrauchen.
Gruss Wilhelm
Sub NeuesMenueEinfuegen()
Dim i As Integer
Dim i_Hilfe As Integer
Dim MenueNeu As CommandBarControl
Dim mb As CommandBarControl
Dim um As CommandBarPopup
Dim mb2 As CommandBarControl
i = Application.CommandBars(1).Controls.Count - 1
i_Hilfe = Application.CommandBars(1).Controls(i).Index
Set MenueNeu = Application.CommandBars(1). _
Controls.Add(Type:=msoControlPopup, _
before:=i_Hilfe, temporary:=True)
MenueNeu.Caption = "&Kno's Extratools"
'Befehl Kopfzeilen
Set mb = MenueNeu.Controls.Add _
(Type:=msoControlButton)
With mb
.Caption = "&Kopfzeilen formatieren"
.Style = msoButtonCaption
.OnAction = "Form10Zeigen"
'.BeginGroup = True
End With
'Menue CIS Auswertung
Set um = MenueNeu.Controls.Add _
(Type:=msoControlPopup)
With um
.Caption = "&CIS Auswertungen"
.BeginGroup = True
End With
'Unterbefehl CIS1
Set mb2 = um.Controls.Add _
(Type:=msoControlButton)
With mb2
.Caption = "CIS&1 Sortieren"
.Style = msoButtonCaption
.OnAction = "CIS_Auswertung1"
End With
'Unterbefehl CIS2
Set mb2 = um.Controls.Add _
(Type:=msoControlButton)
With mb2
.Caption = "CIS&2 Umwandeln"
.Style = msoButtonCaption
.OnAction = "CIS_Auswertung2"
End With
End Sub
Private Sub MenueLoeschen()
On Error Resume Next
With Application.CommandBars(1)
.Controls("&Kno's Extratools").Delete
.Controls("&Kopfzeilen").Delete
.Controls("Kn&o's Funktionen").Delete
End With
End Sub

Bild

Betrifft: AW: VBA-Code für Menuebar-Erweiterung
von: Sonnenpeter

Geschrieben am: 04.03.2005 17:09:45
Hallo Rudolf,
vieleicht hilft Dir das weiter
Sub NeuesMenüEinfügen()
Dim i As Integer
Dim i_Hilfe As Integer
Dim e As Integer
Dim MenüNeu As CommandBarControl
Dim Mb As CommandBarControl
Dim unterm As CommandBarPopup
For e = 1 To Application.CommandBars(1).Controls.Count
'If Application.CommandBars(1).Controls(e).Caption = "BlattMakros" Then Exit Sub
Next e
i = Application.CommandBars(1).Controls.Count
i_Hilfe = Application.CommandBars(1).Controls(i).Index
Set MenüNeu = Application.CommandBars(1). _
Controls.Add(Type:=msoControlPopup, _
Before:=i_Hilfe, Temporary:=True)
MenüNeu.Caption = "Sonnenpeter  privat"
'1 Menuepunkt
Set Mb = MenüNeu.Controls.Add _
(Type:=msoControlButton)
With Mb
.Caption = "Tabellenblatt _&schützen"
.Style = msoButtonIconAndCaption
.OnAction = "BlattschutzEin"
.FaceId = 225
.BeginGroup = True
End With
'2 Menuepunkt
Set Mb = MenüNeu.Controls.Add _
(Type:=msoControlButton)
With Mb
.Caption = "Tabellenschutz ausschalten"
.Style = msoButtonIconAndCaption
.FaceId = 277
.OnAction = "BlattschutzAus"
.BeginGroup = True
End With
'3 Menuepunkt
Set Mb = MenüNeu.Controls.Add _
(Type:=msoControlButton)
With Mb
.Caption = "Alle Tabellenblätter zeigen"
.Style = msoButtonIconAndCaption
.FaceId = 599
.OnAction = "AlleBlätterSichtbar"
.BeginGroup = True
End With
'4 Menuepunkt
Set Mb = MenüNeu.Controls.Add _
(Type:=msoControlButton)
With Mb
.Caption = "Tabellenblatt ausblenden"
.Style = msoButtonIconAndCaption
.FaceId = 600
.OnAction = "BlattVerstecken"
.BeginGroup = True
End With
'Untermenuepunkt1
Set Mb = MenüNeu.Controls.Add _
(Type:=msoControlPopup)
With Mb
.Caption = "Alle Tabellenblätter"
.BeginGroup = True
End With
With Mb.Controls.Add(Type:=msoControlButton)
.Caption = "Alle Tabellen schützen"
.FaceId = 352
.OnAction = "BlattschutzEINAlle"
End With
With Mb.Controls.Add(Type:=msoControlButton)
.Caption = "Alle Tabellen entsperren"
.FaceId = 342
.OnAction = "BlattschutzAUSAlle"
End With
End Sub

Sub MenüLöschen()
On Error Resume Next
With Application.CommandBars(1)
.Controls("Sonnenpeter  privat").Delete
End With
End Sub


Gruß aua Mainz Sonnenpeter
Bild

Betrifft: AW: VBA-Code für Menuebar-Erweiterung
von: Rudolf
Geschrieben am: 04.03.2005 18:50:10
Hallo Wilhelm, hallo Sonnenpeter,
vielen Dank für Eure Unterstützung. Das war mehr als ich zu hoffen wagte. Ich denke damit komme ich super weiter.
Schönes Wochenende,
Rudolf.
Bild

Betrifft: Nachtrag .FaceId = 277......
von: Sonnenpeter
Geschrieben am: 04.03.2005 19:10:57
Hallo Rudolf,
bei http://www.xlt.de findest Du noch die Datei Icon-Ex © by Volker Holling, damit kannst Du Dir die FaceId Nummern mit dem entsprechenden Icon als Bild auflisten.
Gruß aus Mainz
Sonnenpeter
Bild

Betrifft: Nachtrag .FaceId = 277......
von: Rudolf

Geschrieben am: 05.03.2005 12:10:21
Hallo Sonnenpeter,
nochmals vielen Dank. Deinen Codeschnipsel habe ich angepasst und er macht nun genau das, was ich wollte und das sieht dank "FaceId" auch noch schöner aus.
Gruß, Rudolf.
------
Objektorientierte Programmierung liegt mir scheinbar nicht so, aber dieses Beispiel habe ich jetzt verstanden.
Wisst Ihr noch, damals --- FORTRAN IV, PL/1, Cobol ??? ;-)
 Bild
Excel-Beispiele zum Thema "VBA-Code für Menuebar-Erweiterung"
Für ein VBE-Projekt mit VBA-Code ein Paßwort festlegen UserForm mit ComboBoxes durch VBA-Code erstellen
ComboBoxes per VBA-Code in Tabellenblatt erzeugen VBA-Code auf Schaltflächen-Klick auskommentieren
VBA-Code als Zellkommentar anzeigen Aktive Arbeitsmappe ohne VBA-Code und Button speichern