Ankündigung

Einklappen
Keine Ankündigung bisher.

VBA - Menüpunkt hinzufügen/entfernen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • VBA - Menüpunkt hinzufügen/entfernen

    Hallo Board,

    eine kleine VBA-Frage:

    ich habe eine Word-Vorlage, in welcher ich ein Formular zur Erfassung versch. Infos anzeige (mit frmUser.show beim starten des Dok's)
    Nun möchte ich gerne ein neues Menü mit Menüpunkt "Formular öffnen" erstellen.. (z.B. ganz rechts neben dem "?")

    1. Wie mache ich das? Ich habe doch schon ein weilchen mit dem Befehl CommandBar gespielt, aber komme nicht wirklich auf einen grünen Zweig.
    2. Wie entferne ich das Menu beim beenden des Doks wieder? (Sonst habe ich ja nach 5mal Dok starten 5 Menueinträge oder??! )

    Danke für die Hilfe
    Sumogotchi
    Skills: Han ich nöd, wott ich nöd, und wenn ich so öppis überchumm, gang ich zum Dokter.

  • #2
    Re: VBA - Menüpunkt hinzufügen/entfernen

    Original geschrieben von sumogotchi
    Hallo Board,

    eine kleine VBA-Frage:

    ich habe eine Word-Vorlage, in welcher ich ein Formular zur Erfassung versch. Infos anzeige (mit frmUser.show beim starten des Dok's)
    Nun möchte ich gerne ein neues Menü mit Menüpunkt "Formular öffnen" erstellen.. (z.B. ganz rechts neben dem "?")

    1. Wie mache ich das? Ich habe doch schon ein weilchen mit dem Befehl CommandBar gespielt, aber komme nicht wirklich auf einen grünen Zweig.
    2. Wie entferne ich das Menu beim beenden des Doks wieder? (Sonst habe ich ja nach 5mal Dok starten 5 Menueinträge oder??! )

    Danke für die Hilfe
    Sumogotchi
    Hallo

    1. Eine neue Commandbar fügst du wie folgt hinzu

    Set cbar1 = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)
    cbar1.Visible = True

    2. Die neu hinzugefügt CommandBar lässt sich über die Methode "Delete" wieder entfernen (Beispiel: CommandBars("DeineNeueCommandbar").Delete)
    Bachelor of Science ZFH in Information Technology

    Kommentar


    • #3
      hallo phil,

      danke für die prompte hilfe.

      nun habe ich allerdings 12 menübars die in meinem dok umherschweben.

      d.h. die schliessmethode funzt noch nicht richtig
      (habe commandbars("custom1").delete gemacht und das in ein sub mit dem namen private sub document_close() geschriben... war das richtig?

      2te frage: wie mache ich das menu nicht mehr schwebend sondern oben bei der menuleiste eingebettet

      3te frage mit welchem befehl erstelle ich menueinträge?

      danke!

      sumogotchi
      Skills: Han ich nöd, wott ich nöd, und wenn ich so öppis überchumm, gang ich zum Dokter.

      Kommentar


      • #4
        Juhuu Board,

        nach nächtelangem Googeln habe ich die Lösung auf mein Problem selber gefunden...

        Zur Info die Lösung:

        ' Temporary:=True ---> Die Icons werden beim Schließen
        ' von Excel entfernt
        ' Position:=msoBarTop > Symbolleiste am oberen Rand von
        ' Excel andocken
        ' Caption ---> Beschreibung (QuickInfo)
        ' BeginGroup ---> Trennlinie vor Icon
        ' FaceID ---> Symbol auf Schaltfläche
        ' OnAction ---> Prozedur aufrufen
        ' ===============================================
        ' Die beiden folgenden Prozeduren gehören in das
        ' Document-Module "DieseArbeitsmappe"
        ' ===============================================
        ' Eine neue Symbolleiste mit Submenü erzeugen
        ' ===============================================
        Private Sub Workbook_Open()
        ' Variablendeklaration und Referenzierung
        Dim cmb As CommandBar
        Dim cmbp As CommandBarPopup
        Set cmb = Application.CommandBars. _
        Add(Name:="MeineLeiste", _
        Position:=msoBarTop, _
        Temporary:=True)
        ' Das Untermenü erzeugen
        Set cmbp = cmb.Controls.Add(Type:=msoControlPopup)
        cmb.Visible = True
        cmbp.Caption = "Mein Submenü"
        ' Erste Schaltfläche im Untermenü
        With cmbp.Controls.Add(Type:=msoControlButton, _
        Temporary:=True)
        .Caption = "Meine 1. Prozedur"
        .BeginGroup = True
        .FaceId = 59
        .OnAction = "MeineProzedur1"
        End With

        ' Zweite Schaltfläche im Untermenü
        With cmbp.Controls.Add(Type:=msoControlButton, _
        Temporary:=True)
        .Caption = "Meine 2. Prozedur"
        .FaceId = 49
        .OnAction = "MeineProzedur2"
        End With

        ' Referenzierte Objekte freigeben
        Set cmb = Nothing
        Set cmbp = Nothing
        End Sub
        ' ===============================================
        ' Symbolleiste beim Schließen der Mappe entfernen
        ' ===============================================
        Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim cmb As CommandBar
        Set cmb = Application.CommandBars("MeineLeiste")
        cmb.Delete
        Set cmb = Nothing
        End Sub
        ' ================================================
        ' Die beiden folgenden Prozeduren gehören in ein
        ' Standard-Module
        ' ================================================
        ' Prozeduren, die beim Anklicken der Schaltflächen
        ' aufgerufen werden
        ' ================================================

        Sub MeineProzedur1()
        MsgBox Application.UserName
        End Sub

        Sub MeineProzedur2()
        MsgBox Now()
        End Sub
        Skills: Han ich nöd, wott ich nöd, und wenn ich so öppis überchumm, gang ich zum Dokter.

        Kommentar

        Lädt...
        X