Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Menüleiste in Excel-Userform
zurück: Excel-Diagrammbeispiele weiter: Es gibt keine neueren Themen in diesem Forum. Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Isabelle :-)
Menschin


Verfasst am:
20. Aug 2012, 12:04
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

Menüleiste in Excel-Userform - Menüleiste in Excel-Userform

Nach oben
       

Hallöchen,

viele fühlen sich von der API-Lösung für eine Menüleiste im Userform abgeschreckt, darum gibt es heute mal eine Lösung mit reinem Excel. Der Aufwand an Code ist natürlich viel höher und ob es für den Anfänger leichter zu durchschauen ist möchte ich bezweifeln. Dafür ist der Code fix und fertig und kann ohne Anpassung benutzt werden.

Das ist der ganze Code welcher dazu im Userform benötigt wird:

Code:
Option Explicit

Private mobjUserFormMenuClass As clsUserFormMenu

Private Sub UserForm_Initialize()
    Set mobjUserFormMenuClass = UserFormMenu.GetClass
    Call mobjUserFormMenuClass.CreateMenu(1, Me, ThisWorkbook.Name, tabParameter)
End Sub

Private Sub UserForm_Terminate()
    Set mobjUserFormMenuClass = Nothing
End Sub

Der Rest an Programm ist fertig und speist sich alleine aus der Parametertabelle.

So sieht diese Tabelle für ein Menü aus:



Und so das daraus erzeugte Menü:



Den gesamten Code hier abzubilden macht wenig Sinn da es sich doch um über 1.000 Zeilen in verschiedenen Modulen handelt.

Also schaut es euch einfach an.

Ich versuch mal die Funktion kurz zu skizzieren.

Beim initialisieren des Userforms liefert eine Funktion im Addin eine neue Instanz der "UserFormMenu" – Klasse des Addins zurück. In dieser Klasse wird dann die Methode "CreateMenu" aufgerufen, welche weitere Klassen initialisiert und das Menü anlegt. Die gesamte Steuerung liegt im Addin welches auf Klicks und MouseMove im Userform reagiert.
Damit die Klasse weiß welches Menü es anlegen soll benötigen sie als ersten Parameter beim Aufruf die Nummer des Menüs. Damit sie weiß wo sie es anlegen soll das Userform. Dann den Namen der Mappe um die Makros darin aufzurufen und die Tabelle mit den Parametern damit sie weiß wie es aussehen und was es machen soll.

Jetzt aber keine Angst dass ihr die Parametertabelle manuell zusammenfummeln müsst. Dafür habe ich einen Editor geschrieben mit dem sich ganz einfach Menüs zusammenbauen lassen. Hier mal eine Abbildung davon mit obigen Menü.



Da auch der Code des Editors über 1.000 Zeilen beinhaltet verzichte ich hier auf dessen Darstellung. Den könnt ihr euch im Addin selber ansehen.
Der Editor ist auch ein Addin das aber nur bei Bedarf per Doppelklick im Explorer geladen wird. Ich will damit hauptsächlich vermeiden, dass versehentlich in der Mappe des Editors ein Menü angelegt wird.

Das Menüleisten-Addin und das Editor-Addin gibt es in unterschiedlichen Versionen da nach dem letzten Update von Microsoft einige Controls ausgetauscht wurden und damit nur noch die neueste Version funktionierte. Ihr müsst also testen welche Version bei euch funktioniert denn die sind zwar aufwärts-, aber nicht abwärtskompatibel.

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%



Tabelle.jpg
 Beschreibung:
 Dateigröße:  126.93 KB
 Angeschaut:  6419 mal

Tabelle.jpg



Menü.jpg
 Beschreibung:
 Dateigröße:  30.19 KB
 Angeschaut:  6417 mal

Menü.jpg



Menü.jpg
 Beschreibung:
 Dateigröße:  30.19 KB
 Angeschaut:  6420 mal

Menü.jpg



Editor.jpg
 Beschreibung:
 Dateigröße:  97.7 KB
 Angeschaut:  6415 mal

Editor.jpg



Beschreibung .pdf
 Beschreibung:

Download
 Dateiname:  Beschreibung .pdf
 Dateigröße:  221.91 KB
 Heruntergeladen:  133 mal


2002-2003 Windows 7 nach Update.zip
 Beschreibung:

Download
 Dateiname:  2002-2003 Windows 7 nach Update.zip
 Dateigröße:  594.67 KB
 Heruntergeladen:  73 mal


2002-2003 Windows XP vor Update.zip
 Beschreibung:

Download
 Dateiname:  2002-2003 Windows XP vor Update.zip
 Dateigröße:  602.31 KB
 Heruntergeladen:  77 mal


2007-2010 Windows 7 nach Update.zip
 Beschreibung:

Download
 Dateiname:  2007-2010 Windows 7 nach Update.zip
 Dateigröße:  793.25 KB
 Heruntergeladen:  119 mal


2007-2010 Windows 7 vor Update.zip
 Beschreibung:

Download
 Dateiname:  2007-2010 Windows 7 vor Update.zip
 Dateigröße:  762.5 KB
 Heruntergeladen:  90 mal


2007-2010 Windows Vista vor Update.zip
 Beschreibung:

Download
 Dateiname:  2007-2010 Windows Vista vor Update.zip
 Dateigröße:  756.68 KB
 Heruntergeladen:  68 mal

Isabelle :-)
Menschin


Verfasst am:
11. März 2013, 11:01
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis


AW: Menüleiste in Excel-Userform - AW: Menüleiste in Excel-Userform

Nach oben
       

Hallöchen,

ich habe gerade ein Problem festgestellt. Wenn der Dateiname z.B. ein Leerzeichen enthält, dann schlägt die Run-Methode fehl. Das kann durch folgende Änderung der letzten zwei Prozeduren in der Klasse "clsUserForm" verhindert werden:

Code:
Public Sub Action( _
    ByVal pvstrProcedur As String, _
    ByVal pvstrParameter As String)

    'Alle Frames und Lables zuruecksetzen
    Call HideAllFrames
    Call ResetLabels

    On Error GoTo err_exit

    'Prozedur fuer einfachen Button ausrufen
    If pvstrParameter = vbNullString Then

        'Ohne Parameter
        Call Application.Run("'" & WorkbookName & "'!" & pvstrProcedur)

    Else

        'Mit parameter
        Call Application.Run("'" & WorkbookName & "'!" & pvstrProcedur, pvstrParameter)

    End If

    Exit Sub

err_exit:
    MsgBox "Fehler " & Err.Number & vbLf & vbLf & _
        Err.Description, vbCritical, "Programmfehler"
End Sub

Public Sub ToggleAction( _
    ByVal pvstrProcedur As String, _
    ByVal pvstrParameter As String, _
    ByVal pvblnChecked As Boolean)

    'Alle Frames und Lables zuruecksetzen
    Call HideAllFrames
    Call ResetLabels

    On Error GoTo err_exit

    'Prozedur fuer Togglebutton mit zusaetzlichen Parameter ausrufen
    If pvstrParameter = vbNullString Then

        'Ohne Parameter
        Call Application.Run("'" & WorkbookName & "'!" & pvstrProcedur, pvblnChecked)

    Else

        'Mit parameter
        Call Application.Run("'" & WorkbookName & "'!" & pvstrProcedur, pvstrParameter, pvblnChecked)

    End If

    Exit Sub

err_exit:
    MsgBox "Fehler " & Err.Number & vbLf & vbLf & _
        Err.Description, vbCritical, "Programmfehler"
End Sub

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
gromich
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. März 2013, 22:48
Rufname: Michael
Wohnort: Klingenthal

AW: Menüleiste in Excel-Userform - AW: Menüleiste in Excel-Userform

Nach oben
       

Hallo Isabelle,

ich bin absolut fasziniert, selbst für mich als Newbie ist die Logik erkennbar.
Jetzt ist Nachtschicht angesagt, denn ich glaube damit kann ich mir einen Traum erfüllen. Das ganze wird sicher wieder ein paar Tage oder Nächte dauern, aber ich bin optimistisch.

Danke erstmal
Wenn ich Fragen habe darf ich mich melden.

Gruß
Michael
hep
Neuling


Verfasst am:
25. Dez 2013, 13:16
Rufname:

AW: Menüleiste in Excel-Userform - AW: Menüleiste in Excel-Userform

Nach oben
       

Vielen Dank für die Hilfe,
ihr seid super,funktionier mit Makro und Schaltfläche. Optimal!
LG
hep
Unwissender45
absoluter Anfänger


Verfasst am:
19. Jan 2014, 11:51
Rufname: Unwissender


AW: Menüleiste in Excel-Userform - AW: Menüleiste in Excel-Userform

Nach oben
       

Hallo

Smile

_________________
Gruß Alexander

PS: Weiß nicht viel aber helfe gern wenn ich kann Wink
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft-Excel Diagramme