{"id":55000347,"date":"2017-02-01T00:00:00","date_gmt":"2020-01-24T15:59:46","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=347"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ribbons_Teil_III_Interaktion_im_Ribbon","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html","title":{"rendered":"Ribbons, Teil III: Interaktion im Ribbon"},"content":{"rendered":"<p class='introduction'>Das Ribbon l&auml;sst sich nicht so einfach programmieren wie es bei Men&uuml;leisten, Symbolleisten oder Kontextmen&uuml;s der Fall war. Diese Elemente lie&szlig;en sich nach Wunsch mit Objektvariablen referenzieren und zum Beispiel aktivieren oder deaktivieren. Das Ein- oder Ausblenden von Men&uuml;s war auch recht einfach. Beim Ribbon gibt es einen alternativen Programmieransatz, bei dem der XML-Code zur Beschreibung des Aussehens des Ribbons und der VBA-Code f&uuml;r seine Steuerung interagieren sollen. Welche Vorbereitungen dazu notwendig sind und wie die Programmierung im Detail aussieht, zeigt dieser Artikel.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1701_Ribbon.accdb<\/b>. <\/p>\n<h2>Voraussetzungen<\/h2>\n<p>Beachten Sie, wie im ersten Teil dieser Artikelreihe beschrieben, dass Sie einen Verweis auf die Bibliothek <b>Microsoft Office x.0 Object Library <\/b>ben&ouml;tigen, um das Ribbon zu programmieren.<\/p>\n<h2>Eigenschaften dynamisch gestalten<\/h2>\n<p>Die Ribbon-Elemente haben eine ganze Reihe von Attributen, die Sie gleich in der XML-Definition des Ribbons festlegen &#8211; zum Beispiel den Namen, die Beschriftung, die Gr&ouml;&szlig;e bei Schaltfl&auml;chen, den Namen eventuell ausgel&ouml;ster Callback-Prozeduren und viele mehr. Attribute, die Sie per XML definieren, k&ouml;nnen Sie sp&auml;ter nicht mehr &auml;ndern. In vielen F&auml;llen ist das auch sinnvoll. Wer m&ouml;chte schon den nur intern verwendeten Namen eines Ribbon-Elements &auml;ndern<\/p>\n<p>Bisher haben wir allerdings noch nicht dar&uuml;ber gesprochen, dass sich einige Eigenschaften von Ribbon-Elementen auch zur Laufzeit &auml;ndern lassen k&ouml;nnen beziehungsweise dass Sie deren Werte nicht gleich bei der XML-Definition des Ribbons anlegen, sondern dass die Werte von Attributen auch erst beim Erstellen des Ribbons beziehungsweise beim ersten Anzeigen mithilfe von VBA-Funktionen ermittelt werden k&ouml;nnen.<\/p>\n<p>Die Attribute, die das dynamische Abfragen von Werten zur Laufzeit erm&ouml;glichen, beginnen in der Regel mit dem Pr&auml;fix <b>get&#8230; <\/b>gefolgt vom Namen des statischen Attributs. Schauen wir uns dies am Beispiel des <b>button<\/b>-Elements an, das wohl das h&auml;ufigste Ziel von dynamischen Einstellungen sein d&uuml;rfte &#8211; allein, um dieses zu aktivieren oder deaktivieren oder ein- und auszublenden. Hier gibt es etwa die Attribute <b>label<\/b>, <b>visible <\/b>oder <b>enabled<\/b>. Diese k&ouml;nnen Sie bereits in der XML-Definition festlegen. Wenn Sie dies allerdings erst beim Anzeigen des jeweiligen Elements erledigen wollen, verwenden Sie die Attribute <b>getLabel<\/b>, <b>getVisible <\/b>oder <b>getEnabled <\/b>und hinterlegen f&uuml;r diese den Namen der Callback-Funktion, welche den Wert f&uuml;r das entsprechende Attribut liefert.<\/p>\n<p>Schauen wir uns dies an einem Beispiel an. Die folgende Ribbon-Definition enth&auml;lt in einem <b>tab<\/b>-Element ein <b>group<\/b>-Element mit zwei untergeordneten <b>button<\/b>-Elementen. Das erste hat eine statische Bezeichnung, die wir mit dem <b>label<\/b>-Attribut eingestellt haben. Die zweite verwendet das Attribut <b>getLabel <\/b>und gibt daf&uuml;r den Callback-Namen <b>getLabel <\/b>an:<\/p>\n<pre>&lt;customUI ...&gt;\r\n  <span class=\"code\">  <\/span>&lt;ribbon&gt;\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;tabs&gt;\r\n      <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;tab id=\"tabInteraktion\" label=\"Interaktion\"&gt;\r\n        <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;group id=\"grpInteraktion\" label=\"Beispiele\"&gt;\r\n          <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;button label=\"Statisches Label\"             id=\"btnLabelStatisch\"\/&gt;\r\n          <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;button getLabel=\"getLabel\"             id=\"btnLabelDynamisch\"\/&gt;\r\n        <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/group&gt;\r\n      <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/tab&gt;\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/tabs&gt;\r\n  <span class=\"code\">  <\/span>&lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p>Die VBA-Prozedur, die beim Ausl&ouml;sen des Callback-Ereignisses <b>getLabel<\/b> aufgerufen werden soll, sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>getLabel(control<span style=\"color:blue;\"> As <\/span>IRibbonControl, ByRef label)\r\n    label = \"Dynamisches Label\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie erwartet zwei Parameter, von denen der zweite namens <b>label <\/b>in diesem einfachen Beispiel der wichtigere ist: Er nimmt schlicht die Zeichenkette entgegen, die als Bezeichnung angezeigt werden soll. Dementsprechend f&uuml;llen wir die Variable <b>label <\/b>mit dem Wert <b>Dynamisches Label<\/b>. Das Ergebnis finden Sie in Bild 1.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_347_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_347_001.png\" alt=\"Zwei Label mit verschiedenen Beschriftungen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Zwei Label mit verschiedenen Beschriftungen<\/p>\n<h2>Wann erfolgt der Aufruf<\/h2>\n<p>Wie schon weiter oben erw&auml;hnt, werden die Callback-Ereignisse, deren Name mit <b>get&#8230; <\/b>beginnt, bei der Anzeige der jeweiligen Elemente ausgel&ouml;st. Um dies zu belegen, haben wir ein zweites <b>tab<\/b>-Element hinzugef&uuml;gt, dass ein <b>button<\/b>-Element mit dem Wert <b>getLabel <\/b>f&uuml;r das Attribut <b>getLabel <\/b>aufweist:<\/p>\n<pre>&lt;tab id=\"tabMehrInteraktion\"     label=\"Mehr Interaktion ...\">\r\n  <span class=\"code\">  <\/span>&lt;group id=\"grpBeispiele\" label=\"Beispiele\">\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;button getLabel=\"getLabel\" id=\"btnDynamisch2\"\/>\r\n  <span class=\"code\">  <\/span>&lt;\/group>\r\n&lt;\/tab><\/pre>\n<p>Au&szlig;erdem m&uuml;ssen wir nun der Anforderung gerecht werden, dass wir nicht mehr nur eine einzige Schaltfl&auml;che haben, von der aus das Callback-Ereignis <b>getLabel <\/b>ausgel&ouml;st wird, sondern zwei.<\/p>\n<p>In diesem Fall kommt der erste Parameter der Callback-Prozedur zum Zuge, der mit dem Parameter <b>control <\/b>einen Verweis auf das ausl&ouml;sende Steuerelement liefert. <b>control<\/b> enth&auml;lt eine Eigenschaft namens <b>ID<\/b>, mit der wir auf den Wert des Attributs <b>id <\/b>der <b>button<\/b>-elemente zugreifen k&ouml;nnen. Diese pr&uuml;fen wir in einer <b>Select Case<\/b>-Anweisung und weisen verschiedene Bezeichnungen &uuml;ber den R&uuml;ckgabeparameter label <b>zu<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>getLabel(control<span style=\"color:blue;\"> As <\/span>IRibbonControl, ByRef label)\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>Select Case control.ID\r\n        <span style=\"color:blue;\"><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>Case <\/span>\"btnLabelDynamisch\"\r\n            <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>label = \"Dynamisches Label\"\r\n        <span style=\"color:blue;\"><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>Case <\/span>\"btnDynamisch2\"\r\n            <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>label = \"Dynamisches Label 2\"\r\n    <span style=\"color:blue;\"><span class=\"code\">  <\/span><span class=\"code\">  <\/span>End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn Sie nun die Datenbank komprimieren und reparieren (schnellster Weg, die Datenbank zu schlie&szlig;en und wieder zu &ouml;ffnen)  und einen Haltepunkt in die erste Zeile der Prozedur setzen, landen Sie beim Anzeigen des Ribbon-Tabs <b>Interaktion <\/b>in dieser Prozedur und dort im <b>Case<\/b>-Zweig f&uuml;r den Wert <b>btnLabelDynamisch<\/b> (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_347_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_347_002.png\" alt=\"Ansteuern eines Haltepunktes in einer Callback-Prozedur\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Ansteuern eines Haltepunktes in einer Callback-Prozedur<\/p>\n<p>Wechseln Sie danach zum zweiten <b>tab<\/b>-Element des Beispiels, wird <b>getLabel <\/b>wieder ausgel&ouml;st &#8211; diesmal allerdings f&uuml;r das Element <b>btnDynamisch2<\/b>.<\/p>\n<h2>Label w&auml;hrend der Laufzeit aktualisieren<\/h2>\n<p>Damit haben wir allerdings nur gezeigt, wie wir eine Callback-Eigenschaft beim erstmaligen Anzeigen aufrufen, um ein Attribut zur Laufzeit mit einem Wert zu versehen. Wenn Sie anschlie&szlig;end weitere Male zwischen den beiden <b>tab<\/b>-Elementen hin- und herwechseln, wird die Callback-Prozedur <b>getLabel <\/b>nicht mehr aufgerufen.<\/p>\n<p>Wenn Sie dies erreichen wollen, um beispielsweise einen regelm&auml;&szlig;ig aktualisierten Wert wie die Uhrzeit anzuzeigen, m&uuml;ssen Sie den Wert der per <b>get&#8230;<\/b>-Prozedur zugewiesenen Attribute ung&uuml;ltig machen. Welche Voraussetzungen daf&uuml;r erforderlich sind und wie dies gelingt, zeigt der folgende Abschnitt.<\/p>\n<h2>Referenz auf das Ribbon speichern<\/h2>\n<p>Der wichtigste Schritt, um ein Attribut ung&uuml;ltig zu machen, ist das Speichern einer Objektreferenz auf die aktuell angezeigte Ribbon-Definition. In diesem Fall wollen wir die Uhrzeit in einem <b>label<\/b>-Element in einem weiteren Tab anzeigen, das wir wie folgt definieren:<\/p>\n<pre>&lt;customUI ... onLoad=\"OnLoad_Interaktiv\">\r\n  <span class=\"code\">  <\/span>&lt;ribbon>\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;tabs>\r\n      <span class=\"code\">  <\/span><span class=\"code\">  <\/span>...\r\n      <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;tab id=\"tabDynamisch\" label=\"Dynamische Werte\">\r\n        <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;group id=\"grpUhrzeit\" label=\"Uhrzeit\">\r\n          <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;labelControl getLabel=\"getLabel\"             id=\"lblUhrzeit\"\/>\r\n        <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/group>\r\n      <span class=\"code\">  <\/span><span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/tab>\r\n    <span class=\"code\">  <\/span><span class=\"code\">  <\/span>&lt;\/tabs>\r\n  <span class=\"code\">  <\/span>&lt;\/ribbon>\r\n&lt;\/customUI><\/pre>\n<p>Entscheidend ist hier, dass wir f&uuml;r das <b>customUI<\/b>-Element das Attribut <b>onLoad <\/b>mit dem Wert <b>onLoad_Interaktiv <\/b>f&uuml;llen (<b>Interaktiv <\/b>ist der Name, unter dem wir das Ribbon in der Tabelle <b>USysRibbons <\/b>gespeichert haben):<\/p>\n<pre><customUI ... onLoad=\"OnLoad_Interaktiv\"><\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000347\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000347?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000347\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Ribbon l&auml;sst sich nicht so einfach programmieren wie es bei Men&uuml;leisten, Symbolleisten oder Kontextmen&uuml;s der Fall war. Diese Elemente lie&szlig;en sich nach Wunsch mit Objektvariablen referenzieren und zum Beispiel aktivieren oder deaktivieren. Das Ein- oder Ausblenden von Men&uuml;s war auch recht einfach. Beim Ribbon gibt es einen alternativen Programmieransatz, bei dem der XML-Code zur Beschreibung des Aussehens des Ribbons und der VBA-Code f&uuml;r seine Steuerung interagieren sollen. Welche Vorbereitungen dazu notwendig sind und wie die Programmierung im Detail aussieht, zeigt dieser Artikel.<\/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":[66012017,662017,44000005],"tags":[],"class_list":["post-55000347","post","type-post","status-publish","format-standard","hentry","category-66012017","category-662017","category-AccessBenutzeroberflaeche"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ribbons, Teil III: Interaktion im Ribbon - Access [basics]<\/title>\n<meta name=\"description\" content=\"Das Ribbon l\u00e4sst sich nicht so einfach programmieren wie es bei Men\u00fcleisten, Symbolleisten oder Kontextmen\u00fcs der Fall war. Diese Elemente lie\u00dfen sich nach Wunsch mit Objektvariablen referenzieren und zum Beispiel aktivieren oder deaktivieren. Das Ein- oder Ausblenden von Men\u00fcs war auch recht einfach. Beim Ribbon gibt es einen alternativen Programmieransatz, bei dem der XML-Code zur Beschreibung des Aussehens des Ribbons und der VBA-Code f\u00fcr seine Steuerung interagieren sollen. Welche Vorbereitungen dazu notwendig sind und wie die Programmierung im Detail aussieht, zeigt dieser Artikel.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ribbons, Teil III: Interaktion im Ribbon - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Das Ribbon l\u00e4sst sich nicht so einfach programmieren wie es bei Men\u00fcleisten, Symbolleisten oder Kontextmen\u00fcs der Fall war. Diese Elemente lie\u00dfen sich nach Wunsch mit Objektvariablen referenzieren und zum Beispiel aktivieren oder deaktivieren. Das Ein- oder Ausblenden von Men\u00fcs war auch recht einfach. Beim Ribbon gibt es einen alternativen Programmieransatz, bei dem der XML-Code zur Beschreibung des Aussehens des Ribbons und der VBA-Code f\u00fcr seine Steuerung interagieren sollen. Welche Vorbereitungen dazu notwendig sind und wie die Programmierung im Detail aussieht, zeigt dieser Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_347_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"16\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_347_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\",\"name\":\"Ribbons, Teil III: Interaktion im Ribbon - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:46+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Das Ribbon l\\u00e4sst sich nicht so einfach programmieren wie es bei Men\\u00fcleisten, Symbolleisten oder Kontextmen\\u00fcs der Fall war. Diese Elemente lie\\u00dfen sich nach Wunsch mit Objektvariablen referenzieren und zum Beispiel aktivieren oder deaktivieren. Das Ein- oder Ausblenden von Men\\u00fcs war auch recht einfach. Beim Ribbon gibt es einen alternativen Programmieransatz, bei dem der XML-Code zur Beschreibung des Aussehens des Ribbons und der VBA-Code f\\u00fcr seine Steuerung interagieren sollen. Welche Vorbereitungen dazu notwendig sind und wie die Programmierung im Detail aussieht, zeigt dieser Artikel.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Ribbons_Teil_III_Interaktion_im_Ribbon.html\",\"name\":\"Ribbons, Teil III: Interaktion im Ribbon\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000347"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000347\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}