So passen Sie Excel 2016-Kontextmenüs in VBA an

So passen Sie Excel 2016-Kontextmenüs in VBA an

Vor Excel 2007 verwendeten VBA-Programmierer das CommandBar-Objekt zum Erstellen benutzerdefinierter Menüs, benutzerdefinierter Symbolleisten und benutzerdefinierter Kontextmenüs (Rechtsklick). Ab Excel 2007 befindet sich das CommandBar-Objekt an einer eher ungewöhnlichen Position. Wenn Sie Code schreiben, um ein Menü oder eine Symbolleiste anzupassen, fängt Excel diesen Code ab und ignoriert viele Ihrer Befehle.

Anstatt Ihre durchdachte Oberflächenverbesserung anzuzeigen, legt Excel 2007 (wie spätere Versionen) Ihre benutzerdefinierten Menüs und Symbolleisten einfach in eine allgemeine Multifunktionsleisten-Registerkarte namens Add-Ins ab.

Menü- und Symbolleistenanpassungen landen in der Gruppe Add-Ins → Menübefehle oder Add-Ins → Benutzerdefinierte Symbolleisten. Aber das Anpassen von Kontextmenüs (das auch das CommandBar-Objekt verwendet) funktioniert immer noch wie immer – nun, irgendwie.

Endeffekt? Das CommandBar-Objekt ist nicht mehr sehr nützlich, aber es bleibt die einzige Möglichkeit, Kontextmenüs anzupassen.

Hinzufügen eines neuen Elements zum Zellen-Kontextmenü

Unten finden Sie Beispielcode, der dem Kontextmenü, das angezeigt wird, wenn Sie mit der rechten Maustaste auf eine Zelle klicken, ein neues Element hinzufügt. Sie sollten diese Beispiele an Ihre Bedürfnisse anpassen können.

Sie können das Dienstprogramm "Groß-/Kleinschreibung ändern" ein wenig verbessern, indem Sie es über das Kontextmenü der Zelle verfügbar machen.

Die Prozedur AddToShortcut fügt dem Kontextmenü der Zelle ein neues Menüelement hinzu. Sie können es so anpassen, dass es auf Ihre eigenen Makros verweist, indem Sie die Eigenschaften Caption und OnAction des Objekts mit dem Namen NewControl ändern.

Sub AddToShortCut()
  Dim Bar als CommandBar
  Dim NewControl als CommandBarButton
  DeleteFromShortcut
  Set Bar = Application.CommandBars("Zelle")
  Set NewControl = Bar.Controls.Add _
     (Typ:=msoControlButton, ID:=1, _
     temporär:=wahr)
  Mit NewControl
    .Caption = "&Groß-/Kleinschreibung ändern"
    .OnAction = „ChangeCase“
    .Style = msoButtonIconAndCaption
  Ende mit
End Sub

Wenn Sie ein Kontextmenü ändern, bleibt diese Änderung wirksam, bis Sie Excel neu starten. Mit anderen Worten, geänderte Kontextmenüs werden nicht zurückgesetzt, wenn Sie die Arbeitsmappe schließen, die den VBA-Code enthält. Wenn Sie Code schreiben, um ein Kontextmenü zu ändern, schreiben Sie daher fast immer Code, um die Auswirkungen Ihrer Änderung umzukehren.

Die DeleteFromShortcut-Prozedur entfernt das neue Menüelement aus dem Zellen-Kontextmenü:

Unter DeleteFromShortcut()
  Bei Fehler Fortsetzen als nächstes
  Application.CommandBars("Cell").Controls _
    („&Groß-/Kleinschreibung ändern“).Löschen
End Sub

Dies zeigt, wie das neue Menüelement angezeigt wird, nachdem Sie mit der rechten Maustaste auf eine Zelle geklickt haben.

So passen Sie Excel 2016-Kontextmenüs in VBA an

Das Zellen-Kontextmenü mit einem benutzerdefinierten Menüelement: Groß-/Kleinschreibung ändern.

Der erste tatsächliche Befehl nach der Deklaration einiger Variablen ruft die DeleteFromShortcut-Prozedur auf. Diese Anweisung stellt sicher, dass im Kontextmenü der Zelle nur ein Menüelement Fall ändern angezeigt wird. Versuchen Sie, diese Zeile auszukommentieren (setzen Sie ein Apostroph an den Anfang der Zeile) und führen Sie die Prozedur ein paar Mal aus – aber lassen Sie sich nicht mitreißen!

Klicken Sie mit der rechten Maustaste auf eine Zelle, und Sie können mehrere Instanzen des Menüelements Fall ändern sehen. Löschen Sie alle Einträge, indem Sie DeleteFromShortcut mehrmals ausführen (einmal für jeden zusätzlichen Menüpunkt).

Schließlich benötigen Sie eine Möglichkeit, das Kontextmenüelement beim Öffnen der Arbeitsmappe hinzuzufügen und das Menüelement beim Schließen der Arbeitsmappe zu löschen. Dies zu tun ist einfach. Fügen Sie einfach diese beiden Ereignisprozeduren zum Codemodul ThisWorkbook hinzu:

Private Unterarbeitsmappe_Open()
AddToShortCut aufrufen
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Rufen Sie DeleteFromShortcut auf
End Sub

Die Prozedur Workbook_Open wird ausgeführt, wenn die Arbeitsmappe geöffnet wird, und die Prozedur Workbook_BeforeClose wird ausgeführt, bevor die Arbeitsmappe geschlossen wird. Genau das, was der Arzt verordnet hat.

Was ist anders in Excel 2013 und Excel 2016?

Wenn Sie VBA zum Arbeiten mit Kontextmenüs in Excel 2007 oder früher verwendet haben, müssen Sie sich einer wesentlichen Änderung bewusst sein.

Wenn Ihr Code in der Vergangenheit ein Kontextmenü geändert hat, war diese Änderung für alle Arbeitsmappen wirksam. Wenn Sie beispielsweise dem Kontextmenü der Zelle ein neues Element hinzugefügt haben, wird dieses neue Element angezeigt, wenn Sie mit der rechten Maustaste auf eine Zelle in einer beliebigen Arbeitsmappe (und anderen Arbeitsmappen, die Sie später öffnen) geklickt haben . Mit anderen Worten, Änderungen an den Kontextmenüs wurden auf Anwendungsebene vorgenommen .

Excel 2013 und Excel 2016 verwenden eine einzige Dokumentschnittstelle, was sich auf Kontextmenüs auswirkt. Änderungen, die Sie an Kontextmenüs vornehmen, wirken sich nur auf das aktive Arbeitsmappenfenster aus. Wenn Sie den Code ausführen, der das Kontextmenü ändert, wird das Kontextmenü für andere Fenster als das aktive Fenster nicht geändert. Dies ist eine radikale Abkehr von der bisherigen Arbeitsweise.

Eine weitere Wendung: Wenn der Benutzer eine Arbeitsmappe öffnet (oder eine neue Arbeitsmappe erstellt), während das aktive Fenster das geänderte Kontextmenü anzeigt, zeigt die neue Arbeitsmappe auch das geänderte Kontextmenü an. Mit anderen Worten, neue Fenster zeigen dieselben Kontextmenüs wie das Fenster, das beim Öffnen der neuen Fenster aktiv war.

Fazit: Wenn Sie in der Vergangenheit eine Arbeitsmappe oder ein Add-In mit geänderten Kontextmenüs geöffnet haben, konnten Sie sicher sein, dass die geänderten Kontextmenüs in allen Arbeitsmappen verfügbar waren. Diese Gewissheit hast du nicht mehr.

Erstellen Sie benutzerdefinierte Kontextmenüs in Access 2007

Das Makroentwurfsfenster unterscheidet sich in Access 2007 im Vergleich zu späteren Versionen. Erweitern Sie daher die folgenden Abschnitte, um sie zu befolgen, wenn Sie Access 2007 verwenden.

Schritt 1 für Access 2007: Erstellen Sie eine Makrogruppe, die die Menübefehle enthält

In diesem Schritt erstellen Sie eine Makrogruppe, von der jedes Makro ein separater Befehl in Ihrem Kontextmenü ist.

Was ist eine Makrogruppe?

Eine Makrogruppe ist ein einzelnes Makroobjekt, das zwei oder mehr unabhängige Makros enthält. Die einzelnen Makros werden durch die Eingabe eines Namens für jedes Makro in der Spalte „Makronamen“ identifiziert. In der folgenden Abbildung  ist Macro3  eine Makrogruppe. NotFoundMsg  und  FoundMsg  sind einzelne Makros innerhalb der Gruppe, wobei jedes Makro aus zwei Makroaktionen besteht.

Beispiel für eine Makrogruppe

Hinweis:  Die  Spalte „Makroname“  ist standardmäßig ausgeblendet. Um die Spalte „Makroname“ anzuzeigen   , klicken Sie auf der  Registerkarte „Entwurf  “ in der   Gruppe  „Einblenden/Ausblenden“ auf „Makronamen“ .

  1. Klicken Sie auf der  Registerkarte „Erstellen“  in der   Gruppe  „Andere“ auf „Makro“ . Wenn dieser Befehl nicht verfügbar ist, klicken Sie auf den Pfeil unter der  Schaltfläche „ Modul“  oder „  Klassenmodul“  und dann auf  „Makro“ .

  2. Klicken Sie auf der  Registerkarte „Design“  in der   Gruppe  „Einblenden/Ausblenden“ auf „Makronamen“ , um die Spalte „Makroname“  anzuzeigen   .

  3. Für jeden Befehl, den Sie in Ihrem benutzerdefinierten Kontextmenü wünschen:

    • Geben Sie in der  Spalte „Makroname“  den Text ein, der im Kontextmenü angezeigt werden soll (z. B. „Bericht drucken“ oder „Speichern“).

      Hinweis:  Um eine Zugriffstaste zu erstellen, damit Sie den Befehl über die Tastatur auswählen können, geben Sie ein kaufmännisches Und (&) vor dem Buchstaben ein, der als Zugriffstaste im Befehlsnamen dienen soll (z. B. „&Speichern“). Dieser Buchstabe wird im Menü unterstrichen.
    • Wählen Sie in der  Spalte „Aktion“  die erste Aktion aus, die ausgeführt werden soll, wenn Sie im Kontextmenü auf den Befehl klicken.

    • Wenn Sie bei Auswahl dieses Befehls weitere Aktionen ausführen möchten, fügen Sie diese in den folgenden Zeilen hinzu. Lassen Sie für jede weitere Aktion die  Zelle „Makroname“  leer.

      Hinweis:  Um eine Zeile zwischen zwei Menübefehlen zu erstellen, geben Sie in der  Spalte „Makroname“  zwischen den entsprechenden Menübefehlen einen Bindestrich (-) ein.
  4. Speichern Sie das Makro und benennen Sie es, zum Beispiel   mcrShortcutMenuCommands .

Die folgende Abbildung zeigt eine Beispielmakrogruppe für ein benutzerdefiniertes Menü oder Kontextmenü.

Eine Menümakrogruppe in der Entwurfsansicht

Schritt 2 für Access 2007: Erstellen Sie ein Makro, das das Menü erstellt

Dieser Schritt mag überflüssig erscheinen, aber um das Kontextmenü aus der Makrogruppe zu erstellen, die Sie in Schritt 1 erstellt haben, müssen Sie ein zweites Makro erstellen, das die   Makroaktion „AddMenu“ enthält. Dieses Makro wird manchmal als „Menümakro“ bezeichnet.

  1. Klicken Sie auf der  Registerkarte „Erstellen“  in der   Gruppe  „Andere“ auf „Makro“ . Wenn dieser Befehl nicht verfügbar ist, klicken Sie auf den Pfeil unter der  Schaltfläche „ Modul“  oder „  Klassenmodul“  und dann auf  „Makro“ .

  2. Wählen Sie in der ersten Zeile des Makros  AddMenu  in der  Aktionsliste aus  .

  3. Geben Sie unter  „Aktionsargumente“ im  Feld „Menüname“  den Namen des Menüs ein (z. B. „Berichtsbefehle“). Dieses Argument ist nicht erforderlich, wird aber empfohlen, wenn Sie in Schritt 3 planen, das Menü einer Multifunktionsleisten-Registerkarte hinzuzufügen (z. B. der  Registerkarte „Add-Ins“  eines Formulars oder Berichts). Wenn das Menü in Schritt 3 als Kontextmenü hinzugefügt wird, wird das  Argument „Menüname“  ignoriert.

  4. Geben Sie im  Feld „Menümakroname“  den Namen des Makros ein, das Sie in Schritt 1 erstellt haben.

  5. Speichern Sie das Makro und benennen Sie es, zum Beispiel  mcrAddShortcutMenu .

Die folgende Abbildung zeigt ein Beispiel-Menümakro, das das Menü erstellt, das wir in Schritt 1 entworfen haben.

Ein Menümakro in der Entwurfsansicht

Schritt 3 für Access 2007: Hängen Sie das Menü an ein Steuerelement, Formular, Bericht oder eine Datenbank an

Je nachdem, wo das Menü angezeigt werden soll, verwenden Sie eines oder mehrere der folgenden Verfahren.

  • Fügen Sie das Menü zur Registerkarte „Add-Ins“ eines Formulars oder Berichts hinzu

    Verwenden Sie dieses Verfahren, wenn Sie möchten, dass das Menü auf der Registerkarte „Add-Ins“ für ein bestimmtes Formular oder einen bestimmten Bericht angezeigt wird   , wie in der folgenden Abbildung dargestellt:

    Registerkarte „Add-Ins“ mit einem benutzerdefinierten Menü

    1. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Formular oder den Bericht, in dem das Menü angezeigt werden soll, und klicken Sie dann auf  Entwurfsansicht .

    2. Klicken Sie auf der  Registerkarte „Design“  in der   Gruppe  „Einblenden/Ausblenden“ auf „Eigenschaftenblatt“ .

    3. Wählen Sie das gesamte Objekt aus, indem Sie   in der Liste oben im Aufgabenbereich „Eigenschaftenblatt“ die Option „ Formular  “ oder  „Bericht“ auswählen.

    4. Geben Sie auf der  Registerkarte „Andere“  des Eigenschaftenblatts im  Eigenschaftsfeld „Kontextmenü“  den Namen des Makros ein, das Sie in Schritt 2 erstellt haben (in diesem Beispiel „mcrAddShortcutMenu“).

      Wenn Sie das Formular oder den Bericht das nächste Mal öffnen, wird die  Registerkarte „Add-Ins“  im Menüband angezeigt. Klicken Sie auf die Registerkarte, um das Menü anzuzeigen.

      Weitere Informationen zu Techniken zur Multifunktionsleistenanpassung, wie etwa dem Hinzufügen benutzerdefinierter Registerkarten oder dem Ausblenden der Standardregisterkarten, finden Sie im Artikel  Erstellen einer benutzerdefinierten Multifunktionsleiste in Access .

      Das Menüband ist eine Komponente der Microsoft Office Fluent-Benutzeroberfläche.

  • Fügen Sie das Menü als Kontextmenü für ein Formular, einen Bericht oder ein Steuerelement hinzu

    Verwenden Sie dieses Verfahren, wenn das Menü angezeigt werden soll, wenn Sie mit der rechten Maustaste auf ein bestimmtes Formular, einen bestimmten Bericht oder ein bestimmtes Steuerelement klicken, wie in der folgenden Abbildung dargestellt:

    Ein einfaches Kontextmenü

    1. Klicken Sie im Navigationsbereich mit der rechten Maustaste auf das Formular oder den Bericht, in dem das Kontextmenü angezeigt werden soll, und klicken Sie dann auf  Entwurfsansicht .

    2. Klicken Sie auf der  Registerkarte „Design“  in der   Gruppe  „Einblenden/Ausblenden“ auf „Eigenschaftenblatt“ .

    3. Wählen Sie das Steuerelement oder Objekt aus, dem Sie das Kontextmenü hinzufügen möchten.

      Hinweis:  Um das gesamte Objekt auszuwählen, wählen Sie   aus der Liste oben im Aufgabenbereich „Eigenschaftenblatt“ die Option „ Formular  “ oder „  Bericht“ aus.

    4. Geben Sie auf der  Registerkarte „Andere“  im Eigenschaftenblatt im  Eigenschaftsfeld „Kontextmenüleiste“  den Namen des Makros ein, das Sie in Schritt 2 erstellt haben (in diesem Beispiel „mcrAddShortcutMenu“).

  • Fügen Sie das Menü als globales Kontextmenü hinzu

    Dieses Verfahren ersetzt alle Standard-Kontextmenüs in der aktuellen Datenbank. Benutzerdefinierte Kontextmenüs, die Sie an bestimmte Formulare, Berichte oder Steuerelemente angehängt haben, sind nicht betroffen.

    1. Klicken Sie auf die  Microsoft Office-Schaltfläche  und dann auf  Zugriffsoptionen .

    2. Klicken Sie im   Dialogfeld  „Zugriffsoptionen“ auf „Aktuelle Datenbank“ .

    3. Geben Sie unter  „Menüband- und Symbolleistenoptionen“ im  Feld „Kontextmenüleiste“  den Namen des Makros ein, das Sie in Schritt 2 erstellt haben (in diesem Beispiel „mcrAddShortcutMenu“).

  • Benutzerdefinierte Kontextmenüs ersetzen die Standard-Kontextmenüs für die Objekte, denen sie zugeordnet sind. Wenn Sie bestimmte Access-Befehle für die Verwendung in diesen Menüs beibehalten möchten, verwenden Sie die  Aktion „RunCommand“  , um die Befehle in die Makrogruppen für die Menüs einzufügen, in denen Sie sie verwenden möchten.

  • Ein benutzerdefiniertes Kontextmenü, das einem Steuerelement zugeordnet ist, ersetzt alle anderen benutzerdefinierten Kontextmenüs, die in der Datenbank definiert sind. Ein benutzerdefiniertes Kontextmenü, das einem Formular oder Bericht angehängt ist, ersetzt ein benutzerdefiniertes globales Kontextmenü.

  • Wenn Sie ein Menümakro für ein Formular, einen Bericht oder für die Datenbank angeben, führt Access dieses Menümakro aus, wenn das Formular, der Bericht oder die Datenbank geöffnet wird. Wenn Sie Änderungen am Menümakro oder der Makrogruppe vornehmen, die seine Befehle definiert, während das Formular, der Bericht oder die Datenbank geöffnet ist, müssen Sie das Formular, den Bericht oder die Datenbank schließen und erneut öffnen, um die Änderungen anzuzeigen.

  • Um ein Untermenü zu erstellen, befolgen Sie Schritt 1, um eine separate Makrogruppe zu erstellen, die nur die Untermenübefehle enthält. Befolgen Sie dann erneut Schritt 1, um die Befehle für das übergeordnete Menü zu definieren. Fügen Sie das Untermenü als Element in der übergeordneten Makrogruppe hinzu, indem Sie die   Makroaktion „AddMenu“ verwenden. Die folgende Abbildung zeigt die Makrogruppe für ein Menü, das ein Untermenü enthält, und zeigt dann das resultierende Kontextmenü. Die dritte Zeile in der Makrogruppe erstellt das  Untermenü Exportieren nach...  ( mcrSubMenu ).

    Ein Kontextmenü, das ein Untermenü enthält

    Sie können mehrere Untermenüebenen erstellen, indem Sie  AddMenu-  Aktionen in den Makrogruppen für jede Menüebene verwenden.  Stellen Sie sicher, dass Sie für jede  AddMenu- Aktion einen Wert für das Argument „Menüname“ angeben   , da das Untermenü andernfalls als leere Zeile im übergeordneten Menü angezeigt wird.

  • Makrobedingungen werden nur im Menümakro der obersten Ebene unterstützt. Mit anderen Worten: Sie können eine Bedingung in einem Menümakro verwenden, um zu bestimmen, ob ein bestimmtes Menü oder Kontextmenü angezeigt wird, jedoch nur für die Menüs auf der obersten Ebene. Sie können Bedingungen nicht verwenden, um Befehle oder Untermenüs in den Menüs anzuzeigen oder auszublenden. Sie können eine Bedingung auch verwenden, um ein benutzerdefiniertes Kontextmenü oder ein globales Kontextmenü auszublenden oder anzuzeigen.

  • Optional kann das Menümakro, das Sie in Schritt 2 erstellen, Teil einer Makrogruppe sein. Wenn Sie beispielsweise über mehrere Kontextmenüs für verschiedene Objekte oder Steuerelemente verfügen, können Sie ein einzelnes Makroobjekt erstellen, das alle erforderlichen Menümakros enthält. Stellen Sie sicher, dass die  Spalte „Makroname“ angezeigt wird  , und geben Sie für jedes Makro einen eindeutigen Namen ein. Verwenden Sie in Schritt 3 die folgende Notation, um auf das Makro zu verweisen:  Makrogruppenname.Makroname . Zum Beispiel  mcrAddShortcutMenus.AddMenu2 .


Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet ist eine dynamische Arbeitsplattform, mit der Sie Projekte verwalten, Arbeitsabläufe erstellen und mit Ihrem Team zusammenarbeiten können.

SharePoint

SharePoint

SharePoint ist ein webbasiertes Kollaborationssystem, das eine Vielzahl von Workflow-Anwendungen, „Listen“-Datenbanken und anderen Webkomponenten sowie Sicherheitsfunktionen verwendet, um die Zusammenarbeit von Unternehmensgruppen zu steuern.

Ewiger Kalender 1.0.38/1.0.36

Ewiger Kalender 1.0.38/1.0.36

Van Nien Calendar ist eine Kalenderanzeigeanwendung auf Ihrem Telefon, die Ihnen hilft, schnell das Monddatum auf Ihrem Telefon zu sehen und so Ihre wichtige Arbeit zu ordnen.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook ist eine Geschäfts- und Produktivitätsanwendung, die von der Microsoft Corporation entwickelt wurde.

ClickUp

ClickUp

ClickUp ist eine der am höchsten bewerteten Produktivitätsplattformen für jedes Unternehmen. Große Unternehmen wie Google, Booking.com, San Diego Padres und Uber nutzen ClickUp, um die Produktivität am Arbeitsplatz zu steigern.

PDF-XChange Viewer 2.5.322.10

PDF-XChange Viewer 2.5.322.10

PDF ist zu einem häufig verwendeten Format zum Lesen, Erstellen und Senden von Textdokumenten geworden. Im Gegenzug hat die Zahl der für diese Art der Dokumentation eingesetzten Programme zugenommen. PDF-XChange Viewer gehört zu einer wachsenden Zahl von PDF-Viewern.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice bietet eine vollständige Suite von Office-Anwendungen, die mit Microsoft 365 konkurrieren können, insbesondere in Excel, PowerPoint und Word. Es ermöglicht Ihnen eine effektivere Verwaltung Ihrer Projekte und unterstützt mehrere Dateiformate.

Laden Sie iTaxviewer 1.8.7 herunter

Laden Sie iTaxviewer 1.8.7 herunter

Die iTaxViewer-Software ist heute die beliebteste Software zum Lesen von XML-Dateien. Bei dieser Software handelt es sich um eine Anwendung zum Lesen elektronischer Steuererklärungen im XML-Format des General Department of Taxation.

Nitro PDF Reader

Nitro PDF Reader

Nitro PDF Reader ist ein praktischer PDF-Editor, der alle grundlegenden Aufgaben abdeckt, die die meisten Menschen täglich mit PDF-Dokumenten ausführen.

Foxit Reader 12

Foxit Reader 12

Foxit Reader ist in erster Linie ein PDF-Reader und ermöglicht Ihnen außerdem, PDF-Dateien zu erstellen, sie zu signieren, zu bearbeiten und Anmerkungen hinzuzufügen. Es funktioniert auf Betriebssystemen, es gibt Plugins für verschiedene Programme aus dem Microsoft Office-Paket.