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
 
Hinweis
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 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Montag, 29. August 2011