Access: Menüband anpassen

Benutzerdefinierte Labels festlegen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit der sogenannten Callback-Technik geben Sie in XML an, welche VBA-Prozeduren aufgerufen werden, deren Signatur dabei schon vorgegeben ist. Damit können Sie den Titel eines Registers per VBA ermitteln.

Transkript

Ich möchte jetzt zusätzlich zu meinem benutzerdefinierten Register hier das andere Register, was ja Rand & Band überschrieben sein soll, davor einfügen. Das bedeutet, ich muss hier erst mal auf USysRibbons wechseln und ich hole mir immer mit Absicht das mit tab jetzt Markierte, mit Strg+C Kopierte, den Inhalt, der da drin steht, wirklich verbindlich in den Editor, also hier jetzt mal eben reinkopiert. Und möchte ein zweites tab, ein zweites Register, davor einfügen. Da kann ich jetzt entsprechend hier einfach schreiben tab, dann muss eine id folgen, also tabRB, Rand & Band, erfinde ich jetzt mal und damit es ordentlich aussieht, ein ordentlicher Titel. So weit verhält sich das tab noch wie das andere auch und es muss natürlich auch ein Ende kriegen, also so. Es enthält keine Register und im Moment einen fertigen, durchaus mit Schreibfehler versehenen Text, das macht nichts. Mit Strg+A alles markieren, mit Strg+C kopieren und dann schiebe ich es erst mal wieder zur Seite und füge es hier wieder ein. Wenn alles gut geht, kann ich direkt komprimieren, reparieren und finde jetzt davor -- da ist es -- ein leeres Register. Und ich habe den Schreibfehler deswegen ignoriert, weil ich das gar nicht reinschreiben möchte, denn tatsächlich -- ich kann Ihnen das mit Alt+F11 mal eben zeigen -- habe ich hier ein Modul, dieses modVarKonstDLL, was ich immer überall reinschreibe, in dem stehen bestimmte Konstanten drin. Zum Beispiel, wie dieses Programm heißt, das soll per Konstante vermerkt werden und nicht überall zu Fuß drin stehen; welche Version es gerade ist, wann ich das zuletzt bearbeitet habe, wer das war und hier noch speziell für die Messageboxen einen Titel. Und das würde ich gerne benutzen. Lassen Sie sich überraschen, was da gleich passiert. Also, ich habe hier eine Konstante und das bedeutet nämlich auch, ich muss auf VBA-Code zugreifen können. Das macht das Ribbon an sich erst mal nicht. XML und VBA haben nichts miteinander zu tun, ich kann aber hier schon diesen XML-Code hier mal rüberholen. Die Verbindung zwischen den beiden geht über sogenannte Callbacks. Callbacks ist anders programmiert, als Sie das in VBA kennen, in VBA gehen Sie aktiv durch. Sie schreiben eine Prozedur und wenn der Code an dieser Stelle ausgeführt wird, wechselt der Compiler an die Stelle, wo dieses Programm steht. Sie können da aktiv hinspringen sozusagen. Callbacks funktionieren andersrum. Ich vereinbare hier, dass wenn jemand irgendwas ausführen will, er hier nachgucken kann, was er tun soll, besser gesagt, wen er fragen soll. Also, ich schreibe hier nicht label, sondern ich schreibe getLabel -- achten Sie auf das große L, bitte -- und dann den Namen einer Prozedur, die ich in VBA haben muss. Mehr Verbindung gibt es nicht, ich kann auch von diesem Texteditor nicht in den VBA-Code springen. Erst wenn jemand in dem Menüband zum Beispiel irgendwo draufklickt oder in diesem Fall das Menüband dargestellt wird, dann geht Access hin und holt sich diese Prozedur. Ich kann also wirklich nur den Prozedurnamen schreiben und keine Argumente. Argumente sind vordefiniert, ich muss die nehmen, die es automatisch gibt. Wie ich diese Prozedur nenne, ist völlig egal, ich nenne sie klassischerweise genauso wie die Bezeichnung davor. Ob Sie die Prozedur selber groß/klein schreiben ist wurscht und ich nenne sie einfach, wenn es hier ein getLabel ist, auch nachher im Code getLabel. Das ist der Unterschied. Ich werde also eine benutzerdefinierte Prozedur aufrufen, ein sogenanntes Callback, und dann Strg+A, Strg+C, hier schon mal rüberkopieren. Das steht jetzt im Ribbon so drin. Ich bin gerade noch eine Zeile tiefer gegangen, aber wenn ich das jetzt versuche zu starten, dann gäbe es eine Fehlermeldung, weil die Prozedur fehlt. Jetzt muss ich mit Alt+F11 in das Modul, was ich schon vorbereitet habe, modRibbonCallbacks, deswegen heißt das so. Wie das Modul heißt, ist aber ansonsten wurscht. Und hier muss ich jetzt eine Prozedur schreiben, die vorgegeben ist. Die benutzt aber Datentypen, die es so noch nicht gibt, die muss ich erst vereinbaren, unter Extras Verweise, und zwar als Microsoft Office, hier, Object Library. Ohne Zusatz, kein Excel, kein Outlook, kein Access oder sonst was, sondern das ist die Library, die auch zum Ribbon, zum Menüband, weiß, welche Datentypen es gibt. Und jetzt kann ich hier eine Prozedur schreiben, die kann ich im Grunde nur abschreiben. Die ist vordefiniert, den Namen habe ich selbst erfunden, den könnte ich noch ändern, also GetLabel ist das GetLabel, was ich mir eben ausgedacht habe, obwohl das durchaus üblich ist, aber die Argumente as IRibbonControl, das ist vorgegeben. Und auch bei byref, by reference, das ist was, was Sie in VBA wahrscheinlich eher selten benutzen, ein label. Diese sogenannte Signatur, dieser Teil, ist zwingend, den kriege ich übergeben, obwohl ich vereinbart habe, dass dieser Name benutzt wird und nichts über die Signatur geäußert habe. Also weil ich GetLabel aufrufe, wird automatisch diese Prozedur mit dieser Signatur erwartet. Und unter control.id würde ich den Namen des Objektes finden, der das aufgerufen hat, denn man ruft die gleiche Prozedur von praktisch allen Objekten auf, aber im Moment ignoriere ich das noch mal. Ich sage einfach mal, wenn mich einer aufruft, dann gib mal irgendwas zurück. Hallo. Da wird also jetzt gleich "Hallo" drin stehen, auch das ist eher selten, Rückgabeparameter. Ich gebe nicht an eine Function einen Wert zurück, sondern hier steht ein Argument, dessen Inhalt ich in der Prozedur erfülle. Wenn ich mich jetzt nicht vertippt habe, mit Debuggen Kompilieren kriegt man nur die halbe Wahrheit raus, denn der Rest der Wahrheit steckt in XML. Also wenn ich mich nicht vertippt habe, sollte ich jetzt komprimieren können und finde dort oben jetzt in dem Register als Überschrift, "Hallo", weil ich im Code vereinbart habe, nämlich in diesem modRibbonCallbacks, dass dort, wenn mich jemand fragt, einfach "Hallo" erscheinen soll. Und das werde ich jetzt ändern. Ich hatte ja diese Public-Konstanten, die bei mir alle mit p_c anfangen, eine vereinbart, die den Namen enthält. Und Sie können gerne einmal mit Umschalt+F2 gucken, was da drin steht. Da steht "Rand & Band". Wenn ich jetzt mit Alt+F11, das Ganze muss ich natürlich dann speichern, aber ich werde gefragt, ja, einmal speichern, wenn ich das mit Alt+F11 starte, dann sehen Sie, da fehlt was. Glücklicherweise, es hätte auch eine Fehlermeldung auftauchen können, denn das Kaufmanns-Und ist, wie bei HTML übrigens auch, immer so ein Sonderzeichen und deswegen habe ich hier dieses ,askierte, mit dem doppelten Kaufmanns-Und. Es gibt hier eine Variante, die zweimal ein Kaufmanns-Und enthält. Dieses Kaufmanns-Und würde das folgende Zeichen unterstreichen. Das will ich gar nicht, sondern ich will es dargestellt haben, deswegen muss ich jetzt hier die Version nehmen, die Maskiert heißt. Mit Strg+Leertaste kann man das immer ausklappen, also einmal speichern, wieder komprimieren und weil es sich um ein Sonderzeichen handelt, was sonst nicht dargestellt wird, muss ich das mit doppeltem Kaufmanns-Und angeben. Und jetzt habe ich das, was ich will, einen lebenden Registertitel. Sie haben eben gesehen, ich kann da irgendwas reinschreiben, was aus dem VBA-Code geliefert wird.

Access: Menüband anpassen

Nutzen Sie als Datenbankentwickler das Menüband in Access, um dort sauber und platzsparend Ihre Schaltflächen und Bedienelemente unterzubringen – sogar kontextsensitiv.

2 Std. 7 min (24 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.06.2018

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!