{"id":55000462,"date":"2025-02-01T00:00:00","date_gmt":"2025-04-23T17:33:42","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=462"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Office_Eingebaute_Kontextmenuebefehle_recyclen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/","title":{"rendered":"Office: Eingebaute Kontextmen&uuml;befehle recyclen"},"content":{"rendered":"<p><b>Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen&uuml;-Eintr&auml;ge oder sogar vollst&auml;ndige Kontextmen&uuml;s hinzuf&uuml;gen k&ouml;nnen. Was wird dort noch nicht ber&uuml;cksichtigt haben: Manchmal m&ouml;chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen&uuml; oder gar ein vollst&auml;ndiges Men&uuml; nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f&uuml;r die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf&uuml;gen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen&uuml; hinzuzuf&uuml;gen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen &uuml;ber das eingebaute Kontextmen&uuml;-Element ben&ouml;tigst und wie Du dieses in einem benutzerdefinierten Kontextmen&uuml; abbildest.<\/b><\/p>\n<p>In den vorherigen Ausgaben haben wir bereits in einigen Artikeln die Programmierung von Kontextmen&uuml;s beschrieben:<\/p>\n<ul>\n<li><b>Men&uuml;s im VBA-Editor anpassen <\/b>(<b>www.vbentwickler.de\/434<\/b>)<\/li>\n<li><b>Men&uuml;s per VBA programmieren <\/b>(<b>www.vbentwickler.de\/435<\/b>)<\/li>\n<li><b>Kontextmen&uuml;s per VBA programmieren <\/b>(<b>www.vbentwickler.de\/368<\/b>)<\/li>\n<\/ul>\n<p>Auch auf die Anpassung von Kontextmen&uuml;s in Outlook sind wir bereits eingegangen &#8211; siehe <b>Outlook: Kontextmen&uuml;s anpassen <\/b>(<b>www.vbentwickler.de\/369<\/b>).<\/p>\n<p>In diesem Artikel nun schauen wir uns im Detail an, wie wir die eingebauten Kontextmen&uuml;-Befehle in benutzerdefinierte Kontextmen&uuml;s einbauen k&ouml;nnen &#8211; zum Beispiel die aus Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_01\/pic_462_002.png\" alt=\"Beispiel f&uuml;r ein eingebautes Kontextmen&uuml;\" width=\"424,6267\" height=\"566,8095\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Beispiel f&uuml;r ein eingebautes Kontextmen&uuml;<\/span><\/b><\/p>\n<p>Dazu sind die folgenden Schritte n&ouml;tig:<\/p>\n<ul>\n<li>Ermitteln von Informationen, mit denen wir die eingebauten Kontextmen&uuml;-Eintr&auml;ge identifizieren k&ouml;nnen<\/li>\n<li>Einbau der Eintr&auml;ge in ein benutzerdefiniertes Kontextmen&uuml;<\/li>\n<\/ul>\n<h2>Identifizieren der eingebauten Kontextmen&uuml;-Befehle<\/h2>\n<p>Der erste Schritt ist relativ aufwendig. Wir k&ouml;nnen nicht einfach ein Kontextmen&uuml; &ouml;ffnen und dieses beispielsweise anhand des Namens identifizieren. Stattdessen ben&ouml;tigen wir einen anderen Wert, n&auml;mlich die ID dieses Eintrags.<\/p>\n<p>An diesen kommen wir jedoch auch nicht so leicht. Es gibt keine M&ouml;glichkeit, diese ID direkt auszulesen.<\/p>\n<p>Daher bauen wir uns eine Tabelle und eine Prozedur, um diese Tabelle mit den Informationen zu den Kontextmen&uuml;-Eintr&auml;gen zu f&uuml;llen.<\/p>\n<h2>Tabelle zum Speichern der Kontextmen&uuml;-Eintr&auml;ge<\/h2>\n<p>Die Tabelle hei&szlig;t <b>tblControls<\/b> und sieht in der Entwurfsansicht wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_01\/pic_462_003.png\" alt=\"Entwurf der Tabelle zum Speichern der Kontextmen&uuml;-Eintr&auml;ge mit Eigenschaften\" width=\"599,6265\" height=\"443,6336\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Entwurf der Tabelle zum Speichern der Kontextmen&uuml;-Eintr&auml;ge mit Eigenschaften<\/span><\/b><\/p>\n<p>Nachdem wir die Tabelle per Code gef&uuml;llt haben, sollte diese etwa wie in Bild 3 aussehen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_01\/pic_462_004.png\" alt=\"Datenblattansicht der Tabelle zum Speichern der Kontextmen&uuml;-Eintr&auml;ge mit Eigenschaften\" width=\"700\" height=\"314,239\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Datenblattansicht der Tabelle zum Speichern der Kontextmen&uuml;-Eintr&auml;ge mit Eigenschaften<\/span><\/b><\/p>\n<h2>Hauptprozedur zum Einlesen der Kontextmen&uuml;-Elemente<\/h2>\n<p>Die Prozedur <b>KontextmenuesEinlesen <\/b>aus Listing 1 ist die Hauptprozedur zum Einlesen der Steuerelemente der Kontextmen&uuml;s.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>KontextmenuesEinlesen()\r\n     <span style=\"color:blue;\">Dim <\/span>cbr<span style=\"color:blue;\"> As <\/span>CommandBar\r\n     <span style=\"color:blue;\">Dim <\/span>cbc<span style=\"color:blue;\"> As <\/span>CommandBarControl\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>dao.Database\r\n     <span style=\"color:blue;\">Dim <\/span>lngID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"DELETE FROM tblControls\", dbFailOnError\r\n     For Each cbr In Application.CommandBars\r\n         <span style=\"color:blue;\">If <\/span>cbr.BuiltIn = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n             Select Case cbr.Type\r\n                 <span style=\"color:blue;\">Case <\/span>msoBarTypePopup\r\n                     For Each cbc In cbr.Controls\r\n                         <span style=\"color:blue;\">If <\/span>cbc.BuiltIn = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n                             On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n                             db.Execute \"INSERT INTO tblControls(ControlID, ControlCaption, CommandBar, Index, \" _\r\n                                 \"ControlTypeID, ControlType) VALUES(\" & cbc.Id & \", ''\" & cbc.Caption & \"'', ''\" _\r\n                                 & cbr.Name & \"'', \" & cbc.Index & \", \" & cbc.Type & \", ''\" _\r\n                                 & ControlTypeString(cbc.Type) & \"'')\", dbFailOnError\r\n                             lngID = db.OpenRecordset(\"SELECT @@IDENTITY\").Fields(0)\r\n                             <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n                         <span style=\"color:blue;\">End If<\/span>\r\n                         Select Case cbc.Type\r\n                             <span style=\"color:blue;\">Case <\/span>msoControlButton, msoControlComboBox, msoControlExpandingGrid, msoControlEdit, _\r\n                                     msoControlGrid\r\n                             <span style=\"color:blue;\">Case <\/span>msoControlPopup, msoControlButtonPopup, msoControlSplitButtonMRUPopup, _\r\n                                     msoControlSplitButtonPopup\r\n                                 <span style=\"color:blue;\">Call<\/span> UntermenuesEinlesen(db, cbc, lngID, cbr.Name)\r\n                             <span style=\"color:blue;\">Case Else<\/span>\r\n                                 <span style=\"color:blue;\">Debug.Print<\/span> cbc.Type\r\n                         <span style=\"color:blue;\">End Select<\/span>\r\n                     <span style=\"color:blue;\">Next<\/span> cbc\r\n             <span style=\"color:blue;\">End Select<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> cbr\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Die Prozedur KontextmenuesEinlesen liest die Elemente der ersten Ebene in die Tabelle tblControls ein.<\/span><\/b><\/p>\n<p>Um diese zu nutzen, m&uuml;ssen wir zuvor einen Verweis auf die Bibliothek <b>Microsoft Office 16.0 Object Library <\/b>setzen (siehe Bild 4). Diese enth&auml;lt das Objektmodell f&uuml;r den Zugriff auf die <b>CommandBar<\/b>-Elemente, also die Men&uuml;s.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_01\/pic_462_001.png\" alt=\"Verweis auf die Office-Bibliothek\" width=\"499,6267\" height=\"393,8742\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Verweis auf die Office-Bibliothek<\/span><\/b><\/p>\n<p>Die Prozedur <b>KontextmenuesEinlesen<\/b> startet damit, die Tabelle <b>tblControls <\/b>vollst&auml;ndig zu leeren. Das erledigt sie durch den Aufruf einer <b>DELETE<\/b>-Anweisung. <\/p>\n<p>Danach durchl&auml;uft sie in einer &auml;u&szlig;eren <b>For Each<\/b>-Schleife alle Elemente der <b>CommandBars<\/b>-Auflistung. Diese Auflistung enth&auml;lt alle Men&uuml;leisten der jeweiligen Anwendung. Dazu geh&ouml;ren auch alle benutzerdefinierten Elemente und auch die in den moderneren Office-Versionen (ab 2007) nicht mehr sichtbaren Men&uuml;- und Symbolleisten.<\/p>\n<p>Da wir weder an den Steuerelementen der benutzerdefinierten Men&uuml;leisten interessiert sind noch an denen, die in fr&uuml;heren Men&uuml;- und Symbolleisten angezeigt wurden, schlie&szlig;en wir diese aus.<\/p>\n<p>Die benutzerdefinierten Elemente ignorieren wir in einer <b>If&#8230;Then<\/b>-Bedingung, in der wir die Eigenschaft <b>BuiltIn <\/b>des jeweiligen <b>CommandBar<\/b>-Elements untersuchen. Hat diese den Wert <b>True<\/b>, sind wir an der richtigen Stelle.<\/p>\n<p>Den Typ des Men&uuml;s pr&uuml;fen wir in einer <b>Select Case<\/b>-Bedingung, in der wir den Wert der Eigenschaft <b>Type <\/b>des <b>CommandBar<\/b>-Elements mit dem Wert der Konstanten <b>msoBarTypePopup <\/b>vergleichen, was dem Typ f&uuml;r die Kontextmen&uuml;s entspricht.<\/p>\n<p>Sto&szlig;en wir auf ein solches Kontextmen&uuml;, durchlaufen wir in einer weiteren Schleife alle Steuerelemente dieses Men&uuml;s. Das erledigen wir in einer <b>For Each<\/b>-Schleife, die alle Elemente von <b>cbr.Controls <\/b>durchl&auml;uft und das aktuelle Element jeweils mit der Variablen <b>cbc <\/b>referenziert. <b>cbc <\/b>hat den Datentyp <b>CommandBarControl<\/b>, was erst einmal alle m&ouml;glichen Steuerelementtypen umfasst.<\/p>\n<p>In dieser Schleife pr&uuml;fen wir wiederum in einer <b>If&#8230;Then<\/b>-Bedingung auf die Eigenschaft <b>BuiltIn<\/b>, denn auch bei den Kontextmen&uuml;-Befehlen k&ouml;nnen sich benutzerdefinierte Elemente eingeschlichen haben. Diese wollen wir jedoch ignorieren.<\/p>\n<p>Damit haben wir ein Steuerelement gefunden, das wir in unserer Tabelle verewigen wollen.<\/p>\n<p>Das erledigen wir mit einer <b>INSERT INTO<\/b>-Anweisung, die einen neuen Datensatz zur Tabelle <b>tblControls <\/b>hinzuf&uuml;gt und dabei die Felder <b>ControlID<\/b>, <b>ControlCaption<\/b>, <b>CommandBar<\/b>, <b>Index<\/b>, <b>ControlTypeID <\/b>und <b>ControlType <\/b>mit den jeweiligen Werten der Eigenschaften f&uuml;llt.<\/p>\n<p>Die Informationen holen wir aus den folgenden Eigenschaften:<\/p>\n<ul>\n<li><b>ControlID<\/b>: Wird aus der Eigenschaft <b>cbc.Id <\/b>eingelesen. Dies ist bereits die ID, die wir sp&auml;ter zum Hinzuf&uuml;gen eingebauter Kontextmen&uuml;-Steuerelemente zu einem benutzerdefinierten Kontextmen&uuml; ben&ouml;tigen.<\/li>\n<li><b>ControlCaption<\/b>: Lesen wir aus der Eigenschaft <b>cbc.Caption <\/b>des aktuellen Steuerelements aus.<\/li>\n<li><b>CommandBar<\/b>: Stammt aus der Eigenschaft <b>cbr.Name <\/b>des &uuml;bergeordneten Kontextmen&uuml;s.<\/li>\n<li><b>Index<\/b>: Der Index f&uuml;r das Steuerelement innerhalb des &uuml;bergeordneten Men&uuml;s stammt aus der Eigenschaft <b>cbc.Index<\/b>.<\/li>\n<li><b>ControlTypeID<\/b>: Ist der Zahlenwert f&uuml;r den Typ des Steuerelements und stammt aus der Eigenschaft <b>cbc.Type<\/b>.<\/li>\n<li><b>ControlType<\/b>: Soll den Namen der Konstanten f&uuml;r den Typ des Steuerelements aufnehmen, den wir mit der Hilfsfunktion <b>ControlTypeString(cbc.Type)<\/b>ermitteln (siehe weiter unten).<\/li>\n<\/ul>\n<p>Nach dem Eintragen des neuen Datensatzes f&uuml;r dieses Steuerelement lesen wir die ID des neu hinzugef&uuml;gten Datensatzes in die Variable <b>lngID <\/b>ein. Diese ben&ouml;tigen wir noch, um bei den untergeordneten Steuerelementen anzugeben, welches das <b>Parent<\/b>-Steuerelement ist.<\/p>\n<p>Schlie&szlig;lich pr&uuml;fen wir in einer weiteren <b>Select Case<\/b>-Bedingung, welchen Steuerelementtyp unser aktuell bearbeitetes Steuerelement hat. Im Falle von <b>msoControlButton<\/b>, <b>msoControlComboBox<\/b>, <b>msoControlExpandingGrid<\/b>, <b>msoControlEdit <\/b>oder <b>msoControlGrid <\/b>gibt es keine untergeordneten Steuerelemente. Hier soll nichts weiter geschehen.<\/p>\n<p>Die Steuerelemente mit den Typen <b>msoControlPopup<\/b>, <b>msoControlButtonPopup<\/b>, <b>msoControlSplitButtonMRUPopup <\/b>und <b>msoControlSplitButtonPopup <\/b>jedoch k&ouml;nnen untergeordnete Elemente enthalten und deshalb wollen wir auch diese Elemente noch untersuchen.<\/p>\n<p>Zu diesem Zweck rufen wir eine weitere Funktion namens <b>UntermenuesEinlesen <\/b>auf, der wir einen Verweis auf die aktuelle Datenbank (<b>db<\/b>), den Verweis auf das &uuml;bergeordnete Steuerelement (<b>cbc<\/b>), die ID des dazu angelegten Datensatzes in der Tabelle <b>tblControls <\/b>und den Namen des &uuml;bergeordneten Men&uuml;s (<b>cbr.Name<\/b>).<\/p>\n<p>F&uuml;r alle noch verbleibenden Steuerelementtypen geben wir einfach den Wert der entsprechenden Konstanten im Direktbereich auf, damit wir diesen gegebenenfalls noch nachtragen k&ouml;nnen.<\/p>\n<h2>Rekursiver Teil der Prozedur zum Einlesen der Kontextmen&uuml;-Elemente<\/h2>\n<p>Die Prozedur <b>UntermenuesEinlesen <\/b>wird f&uuml;r alle untergeordneten Elemente von men&uuml;artigen Steuerelementen aus aufgerufen und ruft sich auch wieder selbst auf, wenn dabei weitere Steuerelemente mit Kind-Elementen durchlaufen werden (siehe Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>UntermenuesEinlesen(db<span style=\"color:blue;\"> As <\/span>dao.Database, cbcParent<span style=\"color:blue;\"> As <\/span>CommandBarControl, lngParentID<span style=\"color:blue;\"> As Long<\/span>, _\r\n         strCommandBarName<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>cbc<span style=\"color:blue;\"> As <\/span>CommandBarControl\r\n     <span style=\"color:blue;\">Dim <\/span>lngID<span style=\"color:blue;\"> As Long<\/span>\r\n     strCommandBarName = strCommandBarName & \"|\" & cbcParent.Caption\r\n     For Each cbc In cbcParent.Controls\r\n         <span style=\"color:blue;\">If <\/span>cbc.BuiltIn = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n             On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n             db.Execute \"INSERT INTO tblControls(ControlID, ControlCaption, CommandBar, Index, ControlTypeID, \" _\r\n                 & \"ControlType, ParentID) VALUES(\" & cbc.Id & \", ''\" & cbc.Caption & \"'', ''\" & strCommandBarName _\r\n                 & \"'', \" & cbc.Index & \", \" & cbc.Type & \", ''\" & ControlTypeString(cbc.Type) & \"'', \" & lngParentID _\r\n                 & \")\", dbFailOnError\r\n             lngID = db.OpenRecordset(\"SELECT @@IDENTITY\").Fields(0)\r\n             <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         Select Case cbc.Type\r\n             <span style=\"color:blue;\">Case <\/span>msoControlButton, msoControlComboBox, msoControlExpandingGrid, msoControlEdit, msoControlGrid\r\n             <span style=\"color:blue;\">Case <\/span>msoControlPopup, msoControlButtonPopup, msoControlSplitButtonMRUPopup, msoControlSplitButtonPopup\r\n                 <span style=\"color:blue;\">Call<\/span> UntermenuesEinlesen(db, cbc, lngID, strCommandBarName)\r\n             <span style=\"color:blue;\">Case Else<\/span>\r\n                 <span style=\"color:blue;\">Debug.Print<\/span> cbc.Type\r\n         <span style=\"color:blue;\">End Select<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> cbc\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Die Prozedur UntermenuesEinlesen liest die Elemente der ersten Ebene in die Tabelle tblControls ein.<\/span><\/b><\/p>\n<p>Sie erwartet die bereits oben beschriebenen Parameter und erweitert den Parameter <b>strCommandBarName<\/b> mit dem Namen des &uuml;bergeordneten Men&uuml;s zun&auml;chst um den Namen des untergeordneten Elements.<\/p>\n<p>Dann erledigt sie im Prinzip die gleichen Aufgaben wie die oben bereits beschriebene Prozedur <b>KontextmenuesEinlesen<\/b>. Der Unterschied ist, das hier noch das Feld <b>ParentID <\/b>der Tabelle <b>tblControls <\/b>gef&uuml;llt wird, und zwar mit dem Prim&auml;rsch&uuml;sselwert f&uuml;r das &uuml;bergeordnete Element.<\/p>\n<p>So k&ouml;nnten wir leicht auf Basis der in der Tabelle gespeicherten Daten die Hierarchie nachbilden. Au&szlig;erdem ruft die Prozedur sich selbst auf, wenn f&uuml;r ein Steuerelement weitere untergeordnete Steuerelemente gefunden werden.<\/p>\n<h2>Funktion zum Einlesen der Steuerelementtypen als Zeichenkette<\/h2>\n<p>Schlie&szlig;lich verwenden wir noch eine Funktion namens <b>ControlTypeString<\/b>, der wir den Wert der Konstanten f&uuml;r den Typ eines der Steuerelemente als Parameter &uuml;bergeben (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>ControlTypeString(lngControlType<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     Select Case lngControlType\r\n         <span style=\"color:blue;\">Case <\/span>msoControlButton\r\n             ControlTypeString = \"msoControlButton\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlComboBox\r\n             ControlTypeString = \"msoControlComboBox\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlExpandingGrid\r\n             ControlTypeString = \"msoControlExpandingGrid\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlPopup\r\n             ControlTypeString = \"msoControlPopup\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlButtonPopup\r\n             ControlTypeString = \"msoControlButtonPopup\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlSplitButtonMRUPopup\r\n             ControlTypeString = \"msoControlSplitButtonMRUPopup\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlSplitButtonPopup\r\n             ControlTypeString = \"msoControlSplitButtonPopup\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlEdit\r\n             ControlTypeString = \"msoControlEdit\"\r\n         <span style=\"color:blue;\">Case <\/span>msoControlGrid\r\n             ControlTypeString = \"msoControlGrid\"\r\n         <span style=\"color:blue;\">Case Else<\/span>\r\n             <span style=\"color:blue;\">Debug.Print<\/span> lngControlType\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Die Funktion ControlTypeString holt die Konstante als Zeichenkette.<\/span><\/b><\/p>\n<p>Diese Funktion pr&uuml;ft in einer <b>Select Case<\/b>-Bedingung den Wert des Parameters und gibt die Bezeichnung der Konstanten wie beispielsweise <b>msoControlButton <\/b>als Ergebnis der Funktion zur&uuml;ck.<\/p>\n<p>Auf diese Weise k&ouml;nnen wir in der Tabelle einen aussagekr&auml;ftigeren Wert als nur den Zahlenwert der Konstanten f&uuml;r den Typ des jeweiligen Steuerelements hinterlegen.<\/p>\n<h2>Ermitteln der IDs f&uuml;r eingebaute Befehle im benutzerdefinierten Kontextmen&uuml;<\/h2>\n<p>Nun wollen wir die ben&ouml;tigten IDs aus der Tabelle auslesen und diese in einem eigenen Kontextmen&uuml; einbauen.<\/p>\n<p>Die drei Befehle <b>Ausschneiden<\/b>, <b>Kopieren <\/b>und <b>Einf&uuml;gen <\/b>finden wir gleich mehrfach in der Tabelle <b>tblControls<\/b>, da diese in fast jedem Kontextmen&uuml; vorkommen (siehe Bild 5). Sie haben die IDs <b>21<\/b>, <b>19 <\/b>und <b>22<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_01\/pic_462_005.png\" alt=\"IDs f&uuml;r die Befehle Ausschneiden, Kopieren und Einf&uuml;gen\" width=\"499,6267\" height=\"282,7202\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: IDs f&uuml;r die Befehle Ausschneiden, Kopieren und Einf&uuml;gen<\/span><\/b><\/p>\n<p>Damit stellen wir uns nun ein benutzerdefiniertes Kontextmen&uuml; zusammen und zeigen dieses an. Der Code dazu sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>NeuesKontextmenue()\r\n     <span style=\"color:blue;\">Dim <\/span>cbr<span style=\"color:blue;\"> As <\/span>CommandBar\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     CommandBars(\"Benutzerdefiniert\").Delete\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">Set<\/span> cbr = CommandBars.Add(\"Benutzerdefiniert\", _\r\n         msoBarPopup, False, <span style=\"color:blue;\">True<\/span>)\r\n     cbr.Controls.Add msoControlButton, 21\r\n     cbr.Controls.Add msoControlButton, 19\r\n     cbr.Controls.Add msoControlButton, 22\r\n     cbr.ShowPopup\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Hier erstellen wir ein neues <b>CommandBar<\/b>-Objekt mit der <b>Add<\/b>-Methode der <b>CommandBars<\/b>-Auflistung.<\/p>\n<p>Dieser &uuml;bergeben wir den Namen der zu erstellenden Kontextmen&uuml;leiste und den Typ (<b>msoBarPopup<\/b>) und geben mit den folgenden Parametern an, dass es keine Men&uuml;leiste werden soll und die Kontextmen&uuml;leiste tempor&auml;r erstellt werden soll. Das f&uuml;hrt dazu, dass sie nur bis zum Schlie&szlig;en der Datenbank vorhanden ist.<\/p>\n<p>Beim Aufrufen dieser Prozedur erscheint an der Position des Mauszeigers ein Kontextmen&uuml; mit den drei Befehlen <b>Ausschneiden<\/b>, <b>Kopieren <\/b>und <b>Einf&uuml;gen<\/b>.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Auf diese Weise k&ouml;nnen wir benutzerdefinierte Kontextmen&uuml;s leicht um eingebaute Befehle erweitern. Dazu ben&ouml;tigen wir nur die IDs dieser Befehle, die wir in der per Code gef&uuml;llten Tabelle leicht auslesen k&ouml;nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen&uuml;-Eintr&auml;ge oder sogar vollst&auml;ndige Kontextmen&uuml;s hinzuf&uuml;gen k&ouml;nnen. Was wird dort noch nicht ber&uuml;cksichtigt haben: Manchmal m&ouml;chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen&uuml; oder gar ein vollst&auml;ndiges Men&uuml; nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f&uuml;r die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf&uuml;gen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen&uuml; hinzuzuf&uuml;gen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen &uuml;ber das eingebaute Kontextmen&uuml;-Element ben&ouml;tigst und wie Du dieses in einem benutzerdefinierten Kontextmen&uuml; abbildest.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012025,662025,44000038,44000022],"tags":[],"yst_prominent_words":[],"class_list":["post-55000462","post","type-post","status-publish","format-standard","hentry","category-66012025","category-662025","category-Office_programmieren","category-Von_Access_zu_NET"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-04-23T17:33:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#blogposting\",\"name\":\"Office: Eingebaute Kontextmen\\u00fcbefehle recyclen - Visual Basic Entwickler\",\"headline\":\"Office: Eingebaute Kontextmen&uuml;befehle recyclen\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2025_01\\\/pic_462_002.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#articleImage\"},\"datePublished\":\"2025-02-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#webpage\"},\"articleSection\":\"1\\\/2025, 2025, Office programmieren, Von Access zu .NET\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"name\":\"2025\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"position\":2,\"name\":\"2025\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/1\\\/2025\\\/#listItem\",\"name\":\"1\\\/2025\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/1\\\/2025\\\/#listItem\",\"position\":3,\"name\":\"1\\\/2025\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/1\\\/2025\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#listItem\",\"name\":\"Office: Eingebaute Kontextmen&uuml;befehle recyclen\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/#listItem\",\"name\":\"2025\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#listItem\",\"position\":4,\"name\":\"Office: Eingebaute Kontextmen&uuml;befehle recyclen\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2025\\\/1\\\/2025\\\/#listItem\",\"name\":\"1\\\/2025\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/\",\"name\":\"Office: Eingebaute Kontextmen\\u00fcbefehle recyclen - Visual Basic Entwickler\",\"description\":\"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\\u00fc-Eintr\\u00e4ge oder sogar vollst\\u00e4ndige Kontextmen\\u00fcs hinzuf\\u00fcgen k\\u00f6nnen. Was wird dort noch nicht ber\\u00fccksichtigt haben: Manchmal m\\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\\u00fc oder gar ein vollst\\u00e4ndiges Men\\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\\u00fc hinzuzuf\\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \\u00fcber das eingebaute Kontextmen\\u00fc-Element ben\\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\\u00fc abbildest.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Office_Eingebaute_Kontextmenuebefehle_recyclen\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2025-02-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler","description":"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.","canonical_url":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#blogposting","name":"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler","headline":"Office: Eingebaute Kontextmen&uuml;befehle recyclen","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2025_01\/pic_462_002.png","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#articleImage"},"datePublished":"2025-02-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#webpage"},"articleSection":"1\/2025, 2025, Office programmieren, Von Access zu .NET"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","name":"2025"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","position":2,"name":"2025","item":"https:\/\/vbentwickler.de\/category\/2025\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/#listItem","name":"1\/2025"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/#listItem","position":3,"name":"1\/2025","item":"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#listItem","name":"Office: Eingebaute Kontextmen&uuml;befehle recyclen"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/#listItem","name":"2025"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#listItem","position":4,"name":"Office: Eingebaute Kontextmen&uuml;befehle recyclen","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/#listItem","name":"1\/2025"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#webpage","url":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/","name":"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler","description":"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2025-02-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler","og:description":"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.","og:url":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2025-04-23T17:33:42+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Office: Eingebaute Kontextmen\u00fcbefehle recyclen - Visual Basic Entwickler","twitter:description":"Wir haben bereits in einigen weiteren Artikel beschrieben, wie wir unseren Anwendungen in Word, Excel oder Access benutzerdefinierte Kontextmen\u00fc-Eintr\u00e4ge oder sogar vollst\u00e4ndige Kontextmen\u00fcs hinzuf\u00fcgen k\u00f6nnen. Was wird dort noch nicht ber\u00fccksichtigt haben: Manchmal m\u00f6chte man vielleicht ein eingebautes Element in einem benutzerdefinierten Kontextmen\u00fc oder gar ein vollst\u00e4ndiges Men\u00fc nachbauen, um dann selbst genauer zu steuern, wann dieses angezeigt werden soll. Ein gutes Beispiel sind die Befehle f\u00fcr die Verwendung der Zwischenablage, also Ausschneiden, Kopieren und Einf\u00fcgen. Es kann sinnvoll sein, diese einem benutzerdefinierten Kontextmen\u00fc hinzuzuf\u00fcgen. In diesem Artikel beschreiben wir, wie Du herausfindest, welche Informationen \u00fcber das eingebaute Kontextmen\u00fc-Element ben\u00f6tigst und wie Du dieses in einem benutzerdefinierten Kontextmen\u00fc abbildest.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000462","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2025-04-23 15:46:29","updated":"2026-05-16 09:18:43","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2025\/\" title=\"2025\">2025<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/\" title=\"1\/2025\">1\/2025<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tOffice: Eingebaute Kontextmen\u00fcbefehle recyclen\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2025","link":"https:\/\/vbentwickler.de\/category\/2025\/"},{"label":"1\/2025","link":"https:\/\/vbentwickler.de\/category\/2025\/1\/2025\/"},{"label":"Office: Eingebaute Kontextmen&uuml;befehle recyclen","link":"https:\/\/vbentwickler.de\/Office_Eingebaute_Kontextmenuebefehle_recyclen\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000462"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000462\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000462"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}