Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Benutzerdefiniertes Menü in einer Vorlage speichern





Frage

Ich möchte in Excel 2002 ein benutzerdefiniertes Menü erstellen, welches nur aktiv ist, wenn ich eine bestimmte Vorlagendatei (xlt) öffne. D. h., wenn ich die Vorlagendatei "Beispiel.xlt" öffne, soll das benutzerdefinierte Menü angezeigt werden, sonst nicht.

Antwort 1 von coros

Hi online58 ,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner Frage. Kopiere nachfolgende VBA Code in das VBA Projekt "DieseArbeitsmappe" der Datei, bei der die benutzerdefinierte Symbolleiste aufgerufen werden soll.

 Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Benutzerdefinierte Symbolleiste").Visible = False
End Sub

Private Sub Workbook_Open()
Application.CommandBars("Benutzerdefinierte Symbolleiste").Visible = True
End Sub



Bei obigem Code wird beim Öffnen der Datei die Symbolleiste mit dem Namen "Benutzerdefinierte Symbolleiste" eingeblendet. Beim Schließen der Datei wird die Symbolleiste wieder ausgeblendet.

Du musst allerdings den Code noch auf Deine Datei anpassen. Dazu den Text "Benutzerdefinierte Symbolleiste" in dem VBA Code gegen den Namen Deiner Symbolleiste austauschen. Aber Vorsicht, nicht nur den Namen hinschreiben, sondern den Namen zwischen die beiden Anführungszeichen schreiben, sonst kommt es zu einem Fehler.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 1 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von online58

Hallo coros,

Du hast völlig recht mit Deiner Anmerkung.
Eine kleiner Erklärungsversuch (soll keine Entschuldigung sein): ich habe das erste mal gepostet und war völlig überrascht, wie schnell und einfach die Frage abgesetzt werden kann. Als ich dann selber meine Frage gelesen habe, ist es mir sofort aufgefallen. Tut mir wirklich leid.

Zum Lösungsvorschlag: ich habe den Code wie beschrieben eingefügt. Folgende Fehlermeldung erscheint beim öffnen der Datei: "Laufzeitfehler ´5´: Ungültiger Prozeduraufruf oder ungültiges Argument".
Wenn ich die Anführungszeichen wegnehme, erscheint die Fehlermeldung "Laufzeitfehler ´9´: Index außerhalb des gültigen Berechs"
Beim Schließen passiert das selbe.
Noch ein Hinweis: Sobald ich das benutzerdefinierte Menü anlege, ist es ab diesem Zeitpunkt immer vorhanden, auch nach Neustart von Excel.
Mein benutzerdefiniertes Menü heißt "Referenzen"

Villeicht hast Du noch eine Idee.

MfG
onlne58

Antwort 3 von coros

Hi onlne58,

so wie ich den VBA Cpode oben geschrieben habe, sollte er eigentlich funktionieren. Ich vermute mal ganz stark, dass der Fehler bei Dir liegt. Besteht eventuell die Möglichkeit mir Deine Datei mal zukommen zu lassen, damit ich schauen kann, wo der Fehler liegt? Wenn da keine persönlichen Daten, die mich nichts anzugehen haben, drinne stehen, dann schicke die Datei mal an meine E-Mail:coros@excelbeispiele.de. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von online58

Hallo coros,

ich habe Die soeben eine Beispieldatei gemailt.

MfG
online58

Antwort 5 von Mola

Hallo Coros,


könntst Du bitte schreiben an was es gelegen hat? Mich interessiert es deshalb, weil ich eventuell das selbe problem haben könnte...

vielen dank!

gruß
Mola

Antwort 6 von Event

Hallo

Dann mußt Du zwischen die Klammern auch "Referenzen" eintragen dort wo "Benutzerdefinierte Symbolleiste" steht

Gruß

Antwort 7 von coros

Hi an alle,

hier die Auflösung des Problems von @online58: Ich bin davon ausgegangen, dass er mit

Zitat:
benutzerdefiniertes Menü


eine neue Symbolleiste meinte. Das war aber, nachdem er mir eine Mail mit der Anleitung, wie er ein in seinen Augen benutzerdefiniertes Menü anlegt, beschrieben hat, falsch. Er hat in der Arbeitsblatt Menüleiste rechts neben dem Fragezeichen einen neuen Menüpunkt eingefügt. Damit kann mein oben genannter VBA Code natürlich nicht funktionieren, da dieser ja immer eine Symbolleiste ein-, bzw. ausblendet. Um einen Menüpunkt in der Arbeitsblatt Menüleiste aus- bzw. einzublenden würde die Befehlszeile fürs Ausblenden

Application.CommandBars(1).Controls("Referenzen").Visible = False

lauten und fürs Einblenden dann

Application.CommandBars(1).Controls("Referenzen").Visible = True

lauten. Wenn der neue Menübutton sich in einer anderen Symbolleiste befindet dann die Zahl hinter "CommandBars" entsprechend der Symbolleisten-ID abändern.

So, ich hoffe ich konnte das jetzt aufklären, warum es bei @online58 zu Problemen mit dem Code kam. Eventuell ist damit ja auch die Frage von @Mola beantwortet. Wenn nicht, dann sollt sich @Mola noch mal bitte melden, da gibt es bestimmt auch eine Lösung.

Ansonsten allen eine schöne Arbeitswoche.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 8 von online58

Hallo coros,

ich bin begeistert, es macht genau das, was ich brauche.
Ich finde es toll, was Du Dir für Mühe gemacht hast. Generell ist die Hilfe, welche man im Forum bekommt, sensationell (auch die schnelle Reaktionszeit).

Also, vielen herzlichen Dank für die rasche Hilfe, Du hast mir sehr geholfen.

Ich wünsche Dir eine schöne Woche.

MfG
online58

Antwort 9 von OfenAndreas

Hallo Ihr Kundigen,
ich habe ein par Makros, die ich gern in einen Menue mit Unterpunkten in EXCEL 2000 einbinden möchte. Dieses Menue macht natürlich nur Sinn, wenn auch die Makros geladen sind (in einer bestimmten Mappe). Also ein bisschen gestöbert und ein Script zusammengestrickt.
Funzt auch beim Testaufruf, mir geligt es jedoch nicht es über Workbook_Open einzubinden, sagt "Objektvariable oder With Blockvariable nicht festgelegt". Nebenbei wäre eine Abfrage ob Eintrag schon vorhanden mit Verlassen ohne funktion hilfreich.

Ich hoffe auf Eure Energie und sage im Vorraus Danke

PS: Das Script
i = 0
For Each ctl In CommandBars("Worksheet Menu Bar").Controls
i = i + 1
Next ctl
´ Name für neues Menü wird gesetzt
Set ML = Application.CommandBars("Worksheet Menu Bar")
Set U1 = ML.Controls.Add(Type:=msoControlPopup, before:=i + 1)
U1.Caption = "&Stundenzettel"
U1.Tag = "Stundenzettel" ´ dient zur eindeutigen Identifizierung des Menüs

´ 1. Menüpunkt wird angelegt
Set Punkt = U1.Controls.Add(Type:=msoControlButton)
With Punkt
.Caption = "&Neues Stundenblatt"
.OnAction = "Blatt_erzeugen"
.Style = msoButtonIconAndCaption
.FaceId = 144
End With

Set Punkt = U1.Controls.Add(Type:=msoControlButton)
With Punkt
.Caption = "&Stunden ausdrucken"
.OnAction = "makro1"
.Style = msoButtonIconAndCaption
.FaceId = 2103
End With
´ Weiterer Eintrag im 1.Untermenü
Set Punkt = U1.Controls.Add(Type:=msoControlButton)
With Punkt
.Caption = "Daten Sammeln"
.OnAction = "Makro1"
.Style = msoButtonIconAndCaption
.FaceId = 3200
End With

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: