Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

KontextMenus ändern

KontextMenus ändern
01.08.2006 08:56:58
Martin
Guten Morgen,
Ich habe mit Hilfe des Forums rausgekriegt wie man die KontextMenus ändert und wie man eigene Makros miteinbaut. Ich möchte aber, dass meine Makros ganz oben auf der Liste stehen. Der Code sieht so aus:

Sub KontextMenueAendern()
On Error Resume Next
'Kontext-Menü zur Bearbeitung von Zellen:
Set cBar = Application.CommandBars("Cell")
'CommandBarButtons deaktivieren:
cBar.Controls("Ausschneiden").Visible = False
cBar.Controls("Kopieren").Enabled = True
cBar.Controls("Einfügen").Enabled = True
cBar.Controls("Zellen einfügen...").Visible = True
cBar.Controls("Zellen löschen...").Visible = False
cBar.Controls("Zellen formatieren...").Visible = False
cBar.Controls("Dropdown-Auswahlliste...").Visible = False
cBar.Controls("Überwachung hinzufügen").Visible = False
cBar.Controls("Liste erstellen...").Visible = False
cBar.Controls("Hyperlink...").Visible = False
cBar.Controls("Nachschlagen...").Visible = False
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cBar.Controls.Add
With btnKontext
.Caption = "Startseite"
.OnAction = "Hauptmenü"
.FaceId = 1548
.BeginGroup = False
End With
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cBar.Controls.Add
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "&Eingaben Rückgängig Machen"
.OnAction = "EditingMode"
.FaceId = 128
.BeginGroup = True
End With
End Sub

Ich möchte aber, dass die Eintragungen "Startseite" und "Eingaben Rückgängig Machen" ganz oben stehen. Wer weiß ob das geht?

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: KontextMenus ändern
01.08.2006 09:01:07
Hans
Hallo Martin,
nein, das geht nicht, die Index-Eigenschaft ist schreibgeschützt. Alternative: Ein eigenes Kontextmenü an Stelle des Zellkontextmenüs.
gruss hans
AW: KontextMenus ändern
01.08.2006 09:29:02
Hoffi
Hallo Martin,
also bei mir (Excel 2003) klappt es so:
Option Explicit

Sub Button()
Dim cBar As Object
Set cBar = Application.CommandBars("Cell")
With cBar.Controls.Add(, , , 1) 'Erster Eintarg im Kontextmenü ganz oben
.Caption = "Startseite"
.OnAction = "Hauptmenü"
.FaceId = 1548
.BeginGroup = False
End With
With cBar.Controls.Add(, , , 2)' zweiter Eintrag im Kontextmenü
.Style = msoButtonIconAndCaption
.Caption = "&Eingaben Rückgängig Machen"
.OnAction = "EditingMode"
.FaceId = 128
.BeginGroup = True
End With
End Sub


Sub löschen()
Application.CommandBars("Cell").Reset
End Sub

Grüße
Hoffi
P.S. Rückmeldung wäre nett...
Anzeige
AW: KontextMenus ändern
01.08.2006 09:30:43
Hans
... man lernt nie aus ;-)
gruss hans
AW: KontextMenus ändern
01.08.2006 09:36:01
Hoffi
Hallo Hans,
Danke für die Blumen :-)
Und das vom Meister an einen nicht VBA-Profi...
Grüße
Hoffi
AW: KontextMenus ändern
01.08.2006 09:32:06
Hoffi
Nochmal Hallo,
und auch Dein Code mit einem kleinen Zusatz funktioniert einwandfrei:

Sub KontextMenueAendern()
Dim cBar As Object
Dim btnKontext As Object
'Kontext-Menü zur Bearbeitung von Zellen:
Set cBar = Application.CommandBars("Cell")
'CommandBarButtons deaktivieren:
cBar.Controls("Ausschneiden").Visible = False
cBar.Controls("Kopieren").Enabled = True
cBar.Controls("Einfügen").Enabled = True
cBar.Controls("Zellen einfügen...").Visible = True
cBar.Controls("Zellen löschen...").Visible = False
cBar.Controls("Zellen formatieren...").Visible = False
cBar.Controls("Dropdown-Auswahlliste...").Visible = False
cBar.Controls("Überwachung hinzufügen").Visible = False
cBar.Controls("Liste erstellen...").Visible = False
cBar.Controls("Hyperlink...").Visible = False
cBar.Controls("Nachschlagen...").Visible = False
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cBar.Controls.Add(, , , 1)'Eintrag ganz oben
With btnKontext
.Caption = "Startseite"
.OnAction = "Hauptmenü"
.FaceId = 1548
.BeginGroup = False
End With
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cBar.Controls.Add(, , , 2)'Eintrag 2
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "&Eingaben Rückgängig Machen"
.OnAction = "EditingMode"
.FaceId = 128
.BeginGroup = True
End With
End Sub

Grüße
Hoffi
Anzeige
AW: KontextMenus ändern
01.08.2006 09:32:23
Luschi
Hallo Martin,
laut Excel-Hilfe geht das so:
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cbar.Controls.Add(, , , 1, True)
With btnKontext
.Caption = "Startseite"
.OnAction = "Hauptmenü"
.FaceId = 1548
.BeginGroup = False
End With
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cbar.Controls.Add(, , , 2, True)
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "&Eingaben Rückgängig Machen"
.OnAction = "EditingMode"
.FaceId = 128
.BeginGroup = True
End With
Die Zahlen geben an, vor welchem Eintrag das Steuerelement eingefügt werden soll. Beachte auch die Angabe "True". Dadurch wird Ecxel mitgeteilt, daß das zugefügte Steuerelement nut temporär verwaltet wird.
Daraus folgt: Excel wird beendet und die zugefügten Steuerelemente sind wieder verschwunden.
Das ist wichtig, damit keine Geister-Elemente in den Commandbars verbleiben, wenn die entsprechende Tabelle nicht geöffnet ist.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: KontextMenus ändern
01.08.2006 10:05:33
Martin
Danke für eure Hilfe. Das klappt prima.
Ich hätte da noch eine Frage. Wie ich sehe gibt es in Excel 2 KontextMenus. Das eine wird mit der rechten Maustaste in einer Tabelle aufgerufen und bereitet mir jetzt keine Sorgen mehr!
Das zweit wird aufgerufen wenn man mit der rechten Maustaste auf das Excelsymbol neben der Menüleiste klickt. Ich möchte diese Funktionen mit allen Mitteln sperren. Gibt es eine Möglichkeit dieses Kontextmenu zu sperren ohne dass das andere mitgesperrt wird.
AW: KontextMenus ändern
01.08.2006 10:30:33
Hoffi
Hallo Martin,
Das erreichst Du so:

Sub Aus()
Application.CommandBars(44).Enabled = False 'Kontextmenü wird ausgeschaltet
End Sub


Sub An()
Application.CommandBars(44).Enabled = True 'und wieder eingeschaltet
End Sub

Alternative kannst Du auch anstatt 44 "Document" schreiben, so heißt dieses Kontextmenü...
Grüße
Hoffi
Anzeige
AW: KontextMenus ändern
01.08.2006 10:35:47
Martin
Hallo Hoffi,
komischerweise funktioniert das bei mir nicht wenn ich (44) nutze aber mit "Document" klappt's. Vielen lieben Dank!
Gruß aus dem Knast in Celle
AW: :-)
01.08.2006 10:42:51
Hoffi
Hallo Martin,
Danke für die Rückmeldung...
Bei mir funktioniert komischerweise beides (hab auch Excel 2003)
Grüße
Hoffi
AW: :-)
01.08.2006 11:01:58
Luschi
Hallo Hoffi & Martin,
in ExcelXp hat die Document-Symbolleiste den Index 37.
Gruß von Luschi
aus klein-Paris
AW: Menü Auflistung
01.08.2006 10:51:32
Hoffi
Hallo nochmal,
Falls jemand mal wissen will, wieviel Menüs es gibt und wie die heißen und welchen Index die Menüs haben, dann lasst diesen Code mal laufen.

Sub Menüs()
Dim Bar As Object, F As Integer, sFile
sFile = "C:\Test.txt"
F = FreeFile
Open sFile For Append As #F
For Each Bar In Application.CommandBars
Print #F, Bar.Name; Bar.Index
Next Bar
Close #F
End Sub

Grüße
Hoffi
Anzeige
Ich werde unverschämt....
01.08.2006 11:04:18
Martin
Es funktioniert alles prima jetzt bei mir. Nur noch eine Frage. Besteht die Möglichkeit, dass man diesem Kontextmenü einen Titel verpasst..... Frech, ich weiß!!!
AW: Ich werde unverschämt....
01.08.2006 11:07:33
Hoffi
Hallo Martin,
Nee nicht frech...
Aber was verstehst Du unter Titel?
Du kannst dem ganzen Excel einen neuen Namen geben mit
Application.Caption = "Martin´s Excel"
Grüße
Hoffi
AW: Ich werde unverschämt....
01.08.2006 11:16:15
Martin
Ich dachte an so eine Titel für das Kontextmenu. Siehe Datei
Userbild
AW: Ich werde unverschämt....
01.08.2006 11:46:52
Hoffi
Hallo Martin,
Das geht meines Wissens nicht...
Kannst Dir höchstens noch einen Button dazu machen, der keine Action hat....
Option Explicit

Sub KontextMenueAendern()
Dim cbar As Object
Dim btnKontext As Object
'Kontext-Menü zur Bearbeitung von Zellen:
Set cbar = Application.CommandBars("Cell")
'CommandBarButtons deaktivieren:
cbar.Controls("Ausschneiden").Visible = False
cbar.Controls("Kopieren").Enabled = True
cbar.Controls("Einfügen").Enabled = True
cbar.Controls("Zellen einfügen...").Visible = True
cbar.Controls("Zellen löschen...").Visible = False
cbar.Controls("Zellen formatieren...").Visible = False
cbar.Controls("Dropdown-Auswahlliste...").Visible = False
cbar.Controls("Überwachung hinzufügen").Visible = False
cbar.Controls("Liste erstellen...").Visible = False
cbar.Controls("Hyperlink...").Visible = False
cbar.Controls("Nachschlagen...").Visible = False
'Neuen CommandBarButton hinzufügen:
Set btnKontext = cbar.Controls.Add(, , , 2)
With btnKontext
.Caption = "Startseite"
.OnAction = "Hauptmenü"
.FaceId = 1548
.BeginGroup = False
End With
Set btnKontext = cbar.Controls.Add(, , , 3)
'Neuen CommandBarButton hinzufügen:
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "&Eingaben Rückgängig Machen"
.OnAction = "EditingMode"
.FaceId = 128
.BeginGroup = True
End With
Set btnKontext = cbar.Controls.Add(, , , 1)
With btnKontext
.Caption = "Dienstplanorganizer 2007"
.BeginGroup = True
End With
End Sub

Grüße
Hoffi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige