|
Tipp 0062
|
Kontext-Menü ändern und erstellen
|
|
|
Autor/Einsender: Datum: |
|
Angie 23.05.2001 |
|
Entwicklungsumgebung: |
|
Excel 97 |
|
|
Kontext-Menüs können nur per Programm-Code geändert werden. In diesem Beispiel wird aufgezeigt, wie das Kontext-Menü zur Bearbeitung von Zellen (rechte Maustaste in Zelle) geändert bzw. ein neues Kontext-Menü erstellt werden kann.
|
Innerhalb von Tabellenblättern und Diagrammen kann mit der BeforeRightClick-Ereignisprozedur die Anzeige diverser Excel-Kontext-Menüs verhindert bzw. ein eigenes Kontext-Menü angezeigt werden. Hier wurde das Worksheet-Ereignis
BeforeRightClick des Tabellenblatts "Tabelle1" gewählt.
|
|
Code im Codebereich des Moduls |
|
|
Option Explicit
Public cBar As CommandBar
Public cBarVorhanden As Boolean
Public btnKontext As CommandBarButton
Public Const cBarKontextName As String = "Mein Popup-Menue"
'-------- Kontext-Menü zur Bearbeitung von Zellen ändern --------
Sub KontextMenueAendern()
On Error Resume Next
Set cBar = Application.CommandBars("Cell")
cBar.Controls("Ausschneiden").Enabled = False
cBar.Controls("Kopieren").Enabled = False
cBar.Controls("Einfügen").Enabled = False
cBar.Controls("Inhalte einfügen...").Enabled = False
Set btnKontext = cBar.Controls.Add
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "Mein neuer Button"
.FaceId = 59
.BeginGroup = True
.OnAction = "NeuerKontextMenueBtnOnAction"
End With
End Sub
Sub KontextMenueAenderungRueckgaengig()
Application.CommandBars("Cell").Reset
End Sub
'--- Neues Kontext-Menü zur Bearbeitung von Zellen erstellen ---
Sub NeuesKontextMenueErstellen()
For Each cBar In Application.CommandBars
If cBar.Name = cBarKontextName Then
MsgBox "Das neue Kontext-Menü '" & cBarKontextName & _
"' ist bereits vorhanden !", vbInformation
Exit Sub
End If
Next
Set cBar = Application.CommandBars.Add(Name:=cBarKontextName, _
Position:=msoBarPopup)
Set btnKontext = cBar.Controls.Add(Id:=21) 'Ausschneiden
Set btnKontext = cBar.Controls.Add(Id:=19) 'Kopieren
Set btnKontext = cBar.Controls.Add(Id:=22) 'Einfügen
Set btnKontext = cBar.Controls.Add 'Mein neuer Button
With btnKontext
.Style = msoButtonIconAndCaption
.Caption = "Mein neuer Button"
.FaceId = 59
.BeginGroup = True
.OnAction = "NeuerKontextMenueBtnOnAction"
End With
End Sub
Sub NeuerKontextMenueBtnOnAction()
MsgBox "Das OnAction-Makro wurde erfolgereich ausgeführt !", _
vbInformation, Title:=cBarKontextName
End Sub
Sub NeuesKontextMenueLoeschen()
For Each cBar In Application.CommandBars
If cBar.Name = cBarKontextName Then
Application.CommandBars(cBarKontextName).Delete
Exit For
End If
Next
End Sub
|
|
|
Code im Codebereich von DieseArbeitsmappe |
|
|
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each cBar In Application.CommandBars
If cBar.Name = cBarKontextName Then
Application.CommandBars(cBarKontextName).Delete
Exit Sub
End If
Next
Application.CommandBars("Cell").Reset
End Sub
|
|
|
Code im Codebereich der Tabelle
KontextMenue |
|
|
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As _
Excel.Range, Cancel As Boolean)
cBarVorhanden = False
For Each cBar In Application.CommandBars
If cBar.Name = cBarKontextName Then
cBarVorhanden = True
Exit For
End If
Next
If cBarVorhanden Then
Application.CommandBars(cBarKontextName).ShowPopup
Cancel = True
End If
End Sub
|
|
|
|
Der Quellcode im Download-Beispiel ist kommentiert, hier wurde jedoch aus Gründen der Übersichtlichkeit darauf verzichtet.
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Excel-Version |
95 |
|
|
97 |
|
|
2000 |
|
|
2002
(XP) |
|
|
2003 |
|
|
2007 |
|
|
2010 |
|
|
|
|
Download (16,8
kB)
|
Downloads bisher: [ 2943 ]
|
|
|