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

Beiträge aus den Excel-Beispielen zum Thema "VBA-Code für Menuebar-Erweiterung"