Neue Symbolleiste per VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 10.0 (Office XP)
nach unten

Betrifft: Neue Symbolleiste per VBA
von: Martin
Geschrieben am: 08.07.2002 - 18:55:54

Hallo,

bin noch Anfänger auf dem Gebiet. Möchte per VBA eine neue Symbolleiste entwerfen, auf der mehrer Befehlsflächen sind.
Die Symbolleiste soll "Monate" heißen und die Schaltflächen sollen "Jan", "Feb", "Mär", "Apr" usw. heißen. Auf den Schaltflächen soll nur der Text angezeigt werden. Habe es schon probiert mittels Aufzeichnung eines Makros. Die Symbolleiste wird zwar erstellt, aber die Schaltflächen werden nur so angezeigt wie ich sie erstellt habe. z.B. "benutzerdefinierte Schaltfläche". Was mache ich verkehrt?

Sub Monate()

Application.CommandBars.Add(Name:="Monate").Visible = True
Application.CommandBars("Monate").Controls.Add Type:=msoControlButton, ID:= _
2950, Before:=1
End Sub


Im Vorraus besten Dank für Eure Hilfe

Martin

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Silvio
Geschrieben am: 08.07.2002 - 19:26:23

+++++++++++++++++++++++++++++
'DIESEN CODE in den VB-Editor
+++++++++++++++++++++++++++++
Private Sub Workbook_Open()
'eigene Symbolleiste anlegen für die Monate
Dim symb As CommandBar
Dim i As Integer
On Error Resume Next

' Erstellen der leeren Symbolleiste für die Monatsverwaltung
Set symb = Application.CommandBars.Add("Monate", _
Position:=msoBarTop, Temporary:=True)
With symb
.Left = 0
.Visible = True
End With

Set Symbol = Application.CommandBars("Monate").Controls _
.Add(Type:=msoControlButton)
With Symbol
.Style = msoButtonIconAndCaption
.FaceId = 2634
.Caption = "Januar"
.TooltipText = "Bla Bla Bla"
.BeginGroup = True
'führe das Makro mit dem Namen Januar() aus...
.OnAction = "Januar"
End With

Set Symbol = Application.CommandBars("Monate").Controls _
.Add(Type:=msoControlButton)
With Symbol
.Style = msoButtonIconAndCaption
.FaceId = 1016
.Caption = "Februar"
.TooltipText = "bla bla bla"
.BeginGroup = True
'führe das Makro mit dem Namen Februar() aus...
.OnAction = "Februar"
End With


Set Symbol = Application.CommandBars("Monate").Controls _
.Add(Type:=msoControlButton)
With Symbol
.Style = msoButtonIconAndCaption
.FaceId = 462
.Caption = "März"
.TooltipText = "Bla bla Bla"
'führe das Makro mit dem Namen Maerz() aus...
.OnAction = "Maerz"
End With

End Sub


Private Sub Workbook_Activate()
'Symbolleiste bim Aktivieren der Mappe einblenden
On Error Resume Next
Application.CommandBars("Monate").Enabled = True
End Sub


Private Sub Workbook_Deactivate()
'Symbolleiste beim Wechseln auf anderes Blatt ausblenden
On Error Resume Next
Application.CommandBars("Monate").Enabled = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Beim Schließen der Datei die Symbolleiste wieder entfernen
On Error Resume Next
Application.CommandBars("Monate").Delete
End Sub


++++++++++++++++++++++++++++++
Diesen Code in ein Modul
++++++++++++++++++++++++++++++
'PS: Hier wird definiert was passiert wenn
'auf die Schaltflächen z.B. Maerz gedrückt wird
'Siehe auch "Diese Arbeitsmappe-Code unter ".OnAction ="

Sub Januar()
MsgBox "Alles klar Januar!"
End Sub

Sub Februar()
MsgBox "Alles klar Februar!"
End Sub

Sub Maerz()
MsgBox "Alles klar!"
End Sub

Ich hoffe das hilft weiter
Bye Silvio

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Martin
Geschrieben am: 08.07.2002 - 19:32:50

Habe es probiert, aber irgentwie tut sich gar nix. Vielleicht mach ich auch was falsch. Habe mir dein Beispiel kopiert und den VBA Editor gestartet und das Beispiel reinkopiert. Aber es passiert gar nichts?

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Silvio
Geschrieben am: 08.07.2002 - 19:34:25

Hast du die Datei gespeichert und geschlossen ...
Anschließend neu starten! müßte funktionieren

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Martin
Geschrieben am: 08.07.2002 - 19:47:08

Super hat funktioniert, aber warum muß ich jedesmal den VBA Editor neu starten, damit die Symbolleiste angezeigt wird?
Kann ich den Schaltflächen auch einen Befehl zuweisen, der dann immer gespeichert bleibt? Soll nämlich, wenn ich auf Januar drücke, folgendes öffnen. "C:\Dokumente und Einstellungen\g\Eigene Dateien\Excel\Bericht 2003\Januar.xls".
nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Silvio
Geschrieben am: 08.07.2002 - 19:52:50

Die Symbolleiste öffnet sich jedesmal autom. beim starten der Mappe... Also nicht erst beim öffnen des VB-Editors!!!!

Du hast den Code nicht richtig kopiert:
Am unteren Ende steht :
++++++++++++++++++++++++++++++++++
Diesen Code in ein Modul kopieren:
++++++++++++++++++++++++++++++++++
Also ließ dir den Code (besonderes das letzte Stück) nochmal genau durch.... Starte dann den VB-Editor und gehe auf Einfügen - Modul... in das öffnente Fenster dann den unteren Code einfügen...

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: nochwas
Geschrieben am: 08.07.2002 - 19:55:20

Der gesamte andere Code (also der obere Abschnitt)
kommt in den VB-Editor unter "diese Arbeitsmappe" rein!

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Martin
Geschrieben am: 08.07.2002 - 19:57:49

Vielen Dank Silvio, du hast mir echt super geholfen. Riesen Kompliment. Hatte wirklich was vergessen einzufügen. Aber jetzt funktioniert es super. Echt toll, wie einem Anfänger hier geholfen wird. Weiter so.

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Silvio
Geschrieben am: 08.07.2002 - 20:11:38

Um jetzt die Befehle anzupassen.
Gehe in den VB Editor und klicke das "Modul" doppelt an:
Suche das Makro Januar() und kopiere dafür diesen Code hier


Sub Januar()
 Workbooks.Open Filename:= _
        "C:\Dokumente und Einstellungen\g\Eigene Dateien\Excel\Bericht 2003\Januar.xls"
End Sub

nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Martin
Geschrieben am: 09.07.2002 - 12:22:09

Hallo Silvio,

das habe ich schon geschafft. Ein kleines bischen kenn ich mich schon aus. Trotzdem nochmal vielen vielen Dank, hast mir sehr geholfen.

Gruß

Martin


nach oben   nach unten

Re: Neue Symbolleiste per VBA
von: Peter
Geschrieben am: 11.07.2002 - 11:44:25

Hallo Silvio,
läßt sich das auch auf Excel97 übertragen ?
Ich habe die Makros entsprechend Vorgabe kopiert in ein neues Modul bzw. in 'Diese Arbeitsmappe'. Nach Speichern, schließen und neu öffnen waren die Makros in 'Diese Arbeitsmappe' weg. Was habe ich falsch gemacht? bzw kannst Du mir diese Mustermappe bitte als Anhang zumailen ?
Peter


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Neue Symbolleiste per VBA"