Excel-Beispiele:
Erklärungen, Formeln, VBA-Code und mehr
Hinweise zu den Beispielen finden Sie hier: Beispiele
Kategorie: Menü ▸ Veraltet (27)
Kategorie: Menü ▸ Veraltet
(Tipp 14)
Wie kann ich mit VBA abfragen, ob ein bestimmtes Menü in einer bestimmten Menüleiste vorhanden ist?
Dieser Code funktioniert zwar, wird aber sicher in der Praxis keine Rolle mehr spielen.
Zur Arbeit mit Ribbons (dem Menüband, das Symbolleisten und Menüleisten ersetzt hat) empfehle ich die Website von René Holtz: RibbonX-Workshop
Zur alten Menüleiste:
Sub IstVorhanden()
Dim Ctrl As CommandBarControl
Dim strTxt As String
Dim bolSchalter As Boolean
strTxt = "E&xtras" 'das & steht für die Unterstreichung
For Each Ctrl In Application.CommandBars("Worksheet Menu Bar").Controls
If Ctrl.Caption = strTxt Then
bolSchalter = True
End If
Next Ctrl
If bolSchalter = True Then
MsgBox "Control gefunden"
Else
MsgBox "Control nicht gefunden"
End If
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 39)
Wie kann man die Namen der Schaltflächen, deren Indizes, deren ID's und die Namen der Symbolleisten in die Spalten A bis D einlesen?
Der Code funktioniert noch. Aber ob er im Zeitalter der Ribbons/Menübänder noch gebraucht wird?
Sub ID_anzeigen()
Dim intZ as integer, objY As CommandBar, objX As CommandBarControl
range("A1") = "ID": range("B1") = "Name": range("C1") = "Index": range("D1") = "Symbolleiste"
intZ = 2
For Each objY In CommandBars
For Each objX In CommandBars(objY.Name).Controls
Cells(intZ, 1) = objX.ID
Cells(intZ, 2) = objX.Caption
Cells(intZ, 3) = objX.Index
Cells(intZ, 4) = objY.Name
intZ = intZ + 1
Next
Next
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 40)
Wie kann man eine eigene Menüleiste mit Untermenüs erstellen und diese anstelle der Tabellenblattmenüleiste anzeigen lassen?
Nostalgie - mehr ist das wohl heute nicht mehr. Oder nutzt noch jemand die alten Menüs in Excel?
Sub MenueErstellen()
Dim objAktiveMenueLeiste As Object
Dim objMeinMenue As Object, objBefehl As Object, objMB As Object
'objMB, objMeinMenue, Befehl und objAktiveMenüLeiste sind Variablen
On Error Resume Next
'Eigene Menüleiste löschen, falls Makro nochmal aufgerufen wird:
Application.CommandBars("MeinMenü").Delete
'Falls keine eigene Menüleiste erstellt wurde, sondern nur ein Menü:
CommandBars.ActiveMenuBar.Controls("Mein Menü").Delete
'Menüleiste hinzufügen und einblenden
'Soll die aktive Menüleiste ersetzt werden, Hochkommas entfernen:
'Set objMB = CommandBars.Add(Name:="MeinMenü", MenuBar:=True)
'CommandBars("MeinMenü").Visible = True
Set objAktiveMenueLeiste = CommandBars.ActiveMenuBar
'Menü erstellen
Set objMeinMenue = objAktiveMenueLeiste.Controls.Add(Type:=msoControlPopup, Temporary:=True)
objMeinMenue.Caption = "&Mein Menü"
'Anstelle Makroname den Makro einsetzen
'Erster Befehl im Menü
Set objBefehl = objMeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With objBefehl
.Caption = "&1. Befehl"
.OnAction = "Makroname"
End With
'Zweiter Befehl im Menü
Set objBefehl = objMeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With objBefehl
.Caption = "&2. Befehl"
.OnAction = "Makroname"
End With
End Sub
'Um die Original-Menüleiste wieder einzublenden kann man
'folgendes Makro verwenden:
Sub EigeneMenueLeisteLoeschen()
On Error Resume Next
'Löscht die selbsterstellte Menüleiste:
Application.CommandBars("MeinMenü").Delete
'Löscht nur das Menü
CommandBars.ActiveMenuBar.Controls("Mein Menü").Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 64)
Wie kann man überflüssige, benutzerdefinierte Symbolleisten löschen (die Symbolleisten sollen abgefragt und angezeigt werden)?
Sub SymLoeschen()
Dim Cdb As CommandBar
Dim Status As Boolean
For Each Cdb In Application.CommandBars
If Cdb.BuiltIn = False Then
If MsgBox(Cdb.Name & Chr(13) & "Symbolleiste löschen?", vbQuestion + vbYesNo) = vbYes Then Cdb.Delete
End If
Next Cdb
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 41)
Wie fügt man dem Menü Extras der Menüleiste für Tabellenblätter ein Menüelement mit dem Namen "Ton" hinzu und bindet dieses an die Prozedur "Ton"?
Sub MenuelementHinzu()
MenuBars(xlWorksheet).Menus("Extras").MenuItems.Add Caption:="To&n", OnAction:="Ton"
End Sub
Sub Ton()
Dim intI As Integer
For intI = 1 To 10
Beep
Next
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 52)
Wie kann man ein Menü in der Menüleiste für Tabellenblätter wiederherstellen, nachdem es irgendwann zuvor gelöscht wurde, zum Beispiel Format?
Hinweis zu Excel 2007: Entfällt, da es das Menü nicht mehr gibt.
Sub MenueWiederherstellen()
MenuBars(xlWorksheet).Menus.Add Caption:="Format", Before:=4, Restore:=True
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 42)
Wie deaktiviert man das Menüelement mit dem Namen "Ton" aus dem Menü Extras der Menüleiste für Tabellenblätter, so da� es abgeblendet erscheint?
Setzt man Enabled = True ist das Element wieder wählbar.
Sub MenuelementDeAktivieren()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Enabled = False
End Sub
Sub MenuelementAktivieren()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Enabled = True
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 44)
Wie löscht man das Menüelement mit dem Namen "Ton" aus dem Menü Extras der Menüleiste für Tabellenblätter?
Sub MenuelementLoeschen()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 47)
Wie kann man ein Menü mit dem Namen "MeinMenü" in der Menüleiste für Tabellenblätter löschen?
Sub MenueLoeschen()
MenuBars(xlWorksheet).Menus("MeinMenü").Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 43)
Wie versieht man das Menüelement mit dem Namen "Ton" aus dem Menü Extras der Menüleiste für Tabellenblätter mit einem Häkchen?
Wird Checked auf False gesetzt verschwindet das Häckchen.
Sub MenuelementHaekchen()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Checked = True
End Sub
Sub MenuelementKeinHaekchen()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Checked = False
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 46)
Wie kann man ein Menü mit dem Namen "MeinMenü" in die Menüleiste für Tabellenblätter vor dem Hilfemenü hinzufügen?
Sub MenueHinzu()
MenuBars(xlWorksheet).Menus.Add Caption:="Me&inMenü", Before:="?"
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 57)
Wie kann man einen Menüpunkt des Zellkontextmenüs entfernen?
Sub KontextmenuepunktLoeschen()
On Error Resume Next
CommandBars("Cell").Controls("SignalTon").Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 51)
Wie kann man das Menüelement "Zelle" im Menü Format der Menüleiste für Tabellenblätter wiederherstellen, nachdem es irgendwann zuvor gelöscht wurde?
Hinweis zu Excel 2007: Entfällt, da es das Menü nicht mehr gibt.
Sub MenueelementWiederherstellen()
MenuBars(xlWorksheet).Menus("Format"). MenuItems.Add Caption:="Zelle", Restore:=True
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 49)
Wie kann man die Menüleiste mit dem Namen "MeineLeiste" aktivieren?
Sub MenueleisteAnzeigen()
MenuBars("MeineLeiste").Activate
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 48)
Wie kann man eine Menüleiste mit dem Namen "MeineLeiste" hinzufügen?
Bemerkung: Die Menüleiste mu� noch aktiviert werden.
Hinweis zu Excel 2007: Hier ist dieser Code überflüssig, da die eigenen Menüs sowieso im Ribbon Add-Ins erscheinen.
Sub MenueleisteHinzu()
MenuBars.Add "MeineLeiste"
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 50)
Wie kann man eine Menüleiste mit dem Namen "MeineLeiste" löschen?
Sub MenueleisteLoeschen()
MenuBars("MeineLeiste").Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 58)
Wie kann man mit VBA-Code die Position einer Symbolleiste bestimmen?
Hinweis zu Excel 2007: Entfällt.
Sub NeueSymbolleiste()
Dim cmdB As CommandBar
Set cmdB = CommandBars.Add("MyToolbar", temporary:=True)
With cmdB
.Left = 50
.Top = 100
.Visible = True
End With
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 53)
Wie kann man die Standard-Menüleiste für Tabellenblätter wiederherstellen?
Sub MenueleisteWiederherstellen()
MenuBars(xlWorksheet).Reset
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 59)
Wie kann man eigenen Menüpunkten einen Hinweistext in der Statuszeile zuordnen?
Hinweis zu Excel 2007: Entfällt.
Sub MenuStatus()
Dim objMeinMenu As Object
Application.MenuBars(xlWorksheet).Menus.Add "Test"
Set objMeinMenu = Application.MenuBars(xlWorksheet).Menus("Test").MenuItems.Add("1. Menüpunkt")
With objMeinMenu
.OnAction = "Meldung"
.StatusBar = "Ich bin der 1. Menüpunkt"
End With
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 63)
Wie kann man einem Untermenü weitere Submenüeinträge hinzufügen, die Aufschriften sollen aus einem Tabellenblatt übernommen werden (Makros zu den Menüpunkten haben die gleichen Namen wie die Aufschriften)?
Sub MenueAnpassen()
Dim objBar As Object, Liste As Range, intI As Integer
Set objBar = MenuBars("Worksheet").Menus("Extras").MenuItems.AddMenu(Caption:="Projekt-Liste")
Set Liste = Worksheets(1).[a1:a10]
For intI = 1 To Liste.Rows.Count
objBar.MenuItems.Add Liste.Cells(intI, 1), Liste.Cells(intI, 1)
Next intI
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 61)
Wie kann man beim Start einer Arbeitsmappe alle Symbolleisten aus- und eine benutzerdefinierte einblenden, beim SchlieÃ?en der Arbeitsmappe die vorherigen Einstellungen wiederherstellen?
Hinweis zu Excel 2007: Hier ist es wirkungslos.
Dim Cd As CommandBar
Dim Cdb$()
Private Sub Workbook_Open()
Dim intI As Integer
For Each Cd In Application.CommandBars
If Cd.Type <> msoBarTypeMenuBar Then
If Cd.Visible Then
On Error Resume Next
intI = intI + 1
ReDim Preserve Cdb(intI)
Cdb(intI) = Cd.Name
Cd.Visible = False
End If
End If
Next Cd
Application.CommandBars("MeineSymbolleiste").Visible = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim intI As Integer
On Error Resume Next
For intI = 1 To UBound(Cdb)
Application.CommandBars(Cdb(intI)).Visible = True
Next intI
Application.CommandBars("MeineSymbolleiste").Visible = False
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 60)
Wie kann man der Standardsymbolleiste beim Laden einer bestimmten Arbeitsmappe ein Schaltflächensymbol mit Makrozuweisung und Kurznotiz hinzufügen und beim Schlie�en der Arbeitsmappe wieder entfernen?
Hinweis zu Excel 2007: In diesem Fall wird im Ribbon Add-Ins ein eigener Bereich erstellt..
Sub Erstellen()
Toolbars(1).ToolbarButtons.Add Button:=211
With Toolbars(1).ToolbarButtons(Toolbars(1).ToolbarButtons.Count)
.OnAction = "MeinMakro"
.Name = "Mein Makro ausführen!"
End With
End Sub
Sub Loeschen()
Toolbars(1).ToolbarButtons(Toolbars(1).ToolbarButtons.Count).Delete
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 62)
Wie kann man in ein Kontextmenü eine Trennlinie einfügen?
Sub Trennlinie()
With CommandBars("Cell")
.Controls(.Controls.Count - 1).BeginGroup = True
End With
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 45)
Wie benennt man das Menüelement mit dem Namen "Ton" aus dem Menü Extras der Menüleiste für Tabellenblätter um in Piep?
Sub MenuelementUmbenennen()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Ton").Caption = "Piep"
End Sub
Sub MenuelementUmbenennen1()
MenuBars(xlWorksheet).Menus("Extras").MenuItems("Piep").Caption = "Ton"
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 54)
Wie kann man das Zellkontextmenü durch ein eigenes ersetzen?
Auch das Kontextmenü in Excel wird nun per RibbonX angesprochen. Hier ist eine sehr gute Anleitung: RibbonX-Workshop - Das Kontextmenü.
Der alte Code:
Sub Kontext()
Dim cbnNeuesMenue As CommandBarButton
With CommandBars("Cell")
Do While .Controls.Count > 0
On Error Resume Next
.Controls(1).Delete
Loop
Set cbnNeuesMenue = .Controls.Add(msoControlButton)
With cbnNeuesMenue
.Caption = "&Signalton"
.OnAction = "Ton"
End With
End With
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 56)
Wie kann man dem Zellkontextmenü einen eigenen Punkt hinzufügen?
Auch das Kontextmenü in Excel wird nun per RibbonX angesprochen. Hier ist eine sehr gute Anleitung: RibbonX-Workshop - Das Kontextmenü.
Der alte Code:
Sub KontextEintragHinzufuegen()
Dim objMenuepunkt As Object
Set objMenuepunkt = CommandBars("Cell").Controls.Add
With objMenuepunkt
.Caption = "&SignalTon"
.OnAction = "Ton"
End With
End Sub
Kategorie: Menü ▸ Veraltet
(Tipp 55)
Wie kann man das Zellkontextmenü wiederherstellen?
Sub KontextmenueWiederherstellen()
CommandBars("Cell").Reset
End Sub