Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Neue Symbolleiste über VBA erstellen

Forumthread: Neue Symbolleiste über VBA erstellen

Neue Symbolleiste über VBA erstellen
02.02.2008 05:39:00
Max
Hallo Forumsfreunde,
ich würde gerne eine neue Symbolleiste per Makro erstellen. Ich hab mich auch schon daran versucht, aber ich möchte den einzelnen Schaltflächen gerne Attribute zuweisen.
Beispiele:
- Formatvorlage, Schriftart, Schriftbreite in der Breite reduzieren
- zwischen einzelnen Symbolen Abstand einfügen
- eine benutzerdefinierte Schaltfläche einfügen und dieser ein Makro zuweisen
Mein bisheriges VBA läuft gut und sieht wie folgt aus:
----------------------------------------------------------------------------------------------

Sub LeisteHinzu()
Dim cmdB As CommandBar: Set cmdB = CommandBars.Add("Neue_Leiste", temporary:=True)
With cmdB: .Left = 50: .Top = 100: .Visible = True: End With
With Application.CommandBars("Neue_Leiste").Controls:
.Add Type:=msoControlButton, ID:=3, Before:=1 '&Speichern
.Add Type:=msoControlButton, ID:=4, Before:=2 '&Drucken...
'.Add Type:=msoControlButton, ID:=2521,        'Drucken (hp LaserJet 1320 PCL 6)
.Add Type:=msoControlComboBox, ID:=1732, Before:=3 '&Formatvorlage:
.Add Type:=msoControlComboBox, ID:=1728, Before:=4 '&Schriftart:
.Add Type:=msoControlComboBox, ID:=1731, Before:=5 '&Zoom:
.Add Type:=msoControlComboBox, ID:=1733, Before:=6 '&Schriftgrad:
.Add Type:=msoControlButton, ID:=2949, Before:=7 '&Benutzerdefiniertes Menüelement
.Add Type:=msoControlButton, ID:=186, Before:=8 ' Ma&kros...
.Add Type:=msoControlButton, ID:=2186, Before:=9 ' Auf&zeichnen...
.Add Type:=msoControlButton, ID:=893, Before:=10 ' &Blatt schützen...
.Add Type:=msoControlButton, ID:=3159, Before:=11 ' &Gruppierung...
.Add Type:=msoControlButton, ID:=3160, Before:=12 ' Gruppierung &aufheben.
End With
End Sub



Sub Symbolleiste_löschen()
Application.CommandBars("Neue_Leiste").Delete ' löscht die Symbolleiste wieder
End Sub


----------------------------------------------------------------------------------------------
Wäre toll, wenn ihr mir helfen könntet
Gruss
Max Berg

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neue Symbolleiste über VBA erstellen
02.02.2008 09:25:00
Josef
Hallo Max,
als Ansatz.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub LeisteHinzu()
Dim cmdB As CommandBar
Dim cmdBBtn As CommandBarButton

Symbolleiste_loeschen

Set cmdB = CommandBars.Add("Neue_Leiste", temporary:=True)

With cmdB
    .Left = 50
    .Top = 100
    .Visible = True
    
    With cmdB.Controls
        .Add Type:=msoControlButton, ID:=3, Before:=1 '&Speichern
        .Add Type:=msoControlButton, ID:=4, Before:=2 '&Drucken...
        '.Add Type:=msoControlButton, ID:=2521, 'Drucken (hp LaserJet 1320 PCL 6)
        .Add Type:=msoControlComboBox, ID:=1732, Before:=3 '&Formatvorlage:
        .Add Type:=msoControlComboBox, ID:=1728, Before:=4 '&Schriftart:
        .Add Type:=msoControlComboBox, ID:=1731, Before:=5 '&Zoom:
        .Add Type:=msoControlComboBox, ID:=1733, Before:=6 '&Schriftgrad:
        .Add Type:=msoControlButton, ID:=2949, Before:=7 '&Benutzerdefiniertes Menüelement
        .Add Type:=msoControlButton, ID:=186, Before:=8 ' Ma&kros...
        .Add Type:=msoControlButton, ID:=2186, Before:=9 ' Auf&zeichnen...
        .Add Type:=msoControlButton, ID:=893, Before:=10 ' &Blatt schützen...
        .Add Type:=msoControlButton, ID:=3159, Before:=11 ' &Gruppierung...
        .Add Type:=msoControlButton, ID:=3160, Before:=12 ' Gruppierung &aufheben.
    End With
End With

Set cmdBBtn = cmdB.Controls.Add(msoControlButton, Before:=1)

With cmdBBtn
    .Caption = "Neue Schaltfläche" 'Beschriftung
    .Style = msoButtonIconAndCaption
    .BeginGroup = True 'Trenner
    .FaceId = 179 'Symbol
    .OnAction = "makroname" 'Makro
End With

Set cmdB = Nothing
Set cmdBBtn = Nothing
End Sub




Sub Symbolleiste_loeschen()
On Error Resume Next
Application.CommandBars("Neue_Leiste").Delete ' löscht die Symbolleiste wieder
On Error GoTo 0
End Sub


Gruß Sepp



Anzeige
Läuft super! Danke !! :-)
02.02.2008 10:17:48
Max
Hallo Sepp,
bin total überrascht, dass ich hier im Forum so tolle Unterstützung erhalten kann. Hätte ich sowas geahnt, hätte ich mich nicht jahrelang gegen das Internet gewehrt.
Makro läuft super. Später werde ich mich mit weiteren Wünschen (z. B. Breite der Schaltfläche etc.) befassen.
Bin ja erst den 3. Tag im Forum und habe erst seit knapp 2 Wochen Internetanschluss. Da bin ich schon ganz zufrieden, dass ich das soweit hinkriege. Bin fasziniert vom Internet, da muss ich direkt aufpassen, dass ich nicht süchtig werde.
Dein Name ist mir schon wiederholt durch tolle Beiträge aufgefallen.
Muss noch lernen mit dem Forum umzugehen. Mir fehlt da eine Bedienungsanweisung oder so was.
Nochmals besten Dank und bis bald
Max Berg

Anzeige
AW: Läuft super! Danke !! :-)
02.02.2008 10:31:00
Josef
Hallo Max,
"neue" sind in diesem Forum immer herzlich willkommen.
Bedienungsanleitung brauchst du keine, aber vielleicht schaust du dir die Forums-FAQ einmal an.

Gruß Sepp



Anzeige
AW: Läuft super! Danke !! :-)
02.02.2008 10:53:00
Max
Hallo Sepp,
vielen Dank auch für diesen nützlichen Tipp. Wäre von alleine nicht draufgekommen. Habe mit dem "Forums-FAQ" erstmals genügend Beschäftigung.
Gruss
Max Berg
;
Anzeige
Anzeige

Infobox / Tutorial

Neue Symbolleiste in Excel über VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine neue Symbolleiste in Excel über VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub LeisteHinzu()
       Dim cmdB As CommandBar
       Set cmdB = CommandBars.Add("Neue_Leiste", temporary:=True)
       With cmdB
           .Left = 50
           .Top = 100
           .Visible = True
       End With
       With Application.CommandBars("Neue_Leiste").Controls
           .Add Type:=msoControlButton, ID:=3, Before:=1 ' &Speichern
           .Add Type:=msoControlButton, ID:=4, Before:=2 ' &Drucken...
           .Add Type:=msoControlComboBox, ID:=1732, Before:=3 ' &Formatvorlage:
           .Add Type:=msoControlComboBox, ID:=1728, Before:=4 ' &Schriftart:
           .Add Type:=msoControlButton, ID:=2949, Before:=5 ' &Benutzerdefiniertes Menüelement
       End With
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder klicke auf "Ausführen" im Menü.
  5. Löschen der Symbolleiste:

    • Um die Symbolleiste zu löschen, verwende den folgenden Code:
    Sub Symbolleiste_löschen()
       On Error Resume Next
       Application.CommandBars("Neue_Leiste").Delete
       On Error GoTo 0
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Symbolleiste kann nicht erstellt werden"

    • Lösung: Stelle sicher, dass du den Code in einem Modul und nicht in einem Arbeitsblatt oder einer Benutzerform eingegeben hast.
  • Fehler: "Symbolleiste wird nicht angezeigt"

    • Lösung: Überprüfe die Position (Left und Top) der Symbolleiste. Möglicherweise ist sie außerhalb des sichtbaren Bereichs.

Alternative Methoden

Neben VBA kannst du auch die Excel-Oberfläche verwenden, um Symbolleisten anzupassen. Gehe zu Datei > Optionen > Symbolleiste für den Schnellzugriff, um benutzerdefinierte Buttons hinzuzufügen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das eine benutzerdefinierte Schaltfläche hinzufügt:

Sub BenutzerdefinierteSchaltfläche()
    Dim cmdB As CommandBar
    Set cmdB = CommandBars.Add("Neue_Leiste", temporary:=True)
    Dim cmdBBtn As CommandBarButton
    Set cmdBBtn = cmdB.Controls.Add(msoControlButton, Before:=1)
    With cmdBBtn
        .Caption = "Meine Schaltfläche"
        .OnAction = "MausklickMakro"
    End With
End Sub

In diesem Beispiel wird eine Schaltfläche mit der Beschriftung "Meine Schaltfläche" erstellt, die ein Makro namens MausklickMakro ausführt.


Tipps für Profis

  • Nutze msoControlButton und msoControlComboBox, um verschiedene Steuerelemente hinzuzufügen.
  • Experimentiere mit verschiedenen IDs, um die gewünschten Funktionen zu integrieren.
  • Halte den Code modular, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Breite der Schaltflächen anpassen?
Die Breite der Schaltflächen kann über die Width-Eigenschaft des CommandBarButton-Objekts angepasst werden.

2. Funktioniert dies in Excel 365?
Ja, die beschriebenen Methoden zur Erstellung einer excel vba toolbar sind mit Excel 365 kompatibel. Achte darauf, die richtigen VBA-Referenzen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige