Access: Menüband anpassen

Benutzerdefinierte Schaltflächen beschriften

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Damit bei mehrfacher Nutzung der GetLabel-Prozedur die verschiedenen aufrufenden Steuerelemente unterschieden werden können, liefert das Menüband deren ID mit. Daran können Sie mit einer SelectCase-Struktur die passenden Werte erkennen.

Transkript

Die Beschriftung dieser Registerkarte ist automatisch von VBA geliefert worden. Diese Technik geht natürlich auch für Schaltflächen. Ich möchte Ihnen jetzt zeigen, wie Sie das bei einer Schaltfläche entsprechend machen, also ich muss erst mal in den Ribbon-Code von dem XML nachbessern, ich kopiere mir das wieder in meinen Editor hinein und kann jetzt innerhalb dieser Registerkarte Tab eine neue Gruppe anlegen. Das muss man nicht einrücken, es macht es aber übersichtlicher, also eine group mit einer id, sagen wir mal grpInfo und einen ruhig statischen Label, also da steht jetzt wirklich zu Fuß Info drin, ohne dass an der Stelle irgendwas aus VBA ermittelt würde und diese Gruppe wird am Ende natürlich auch wieder zugemacht. Und da drinnen liegt eine Schaltfläche, die also mit button beginnt und meinetwegen die id kriegt, btn, für Button, Beenden. Da möchte ich diese Datenbank beenden und deswegen kriegt sie ein getLabel, Achtung, kleines get, großes Label und die ruft die gleiche VBA-Prozedur getLabel auf. Mehr soll sie erst mal noch nicht können. Damit sie ein schönes Bild kriegt, mache ich ein imageMso schon mal, da gibt es so ein Happy Face, da muss man nicht lange grübeln, darum kümmern wir uns später noch. Das heißt, diese Schaltfläche kann nichts, die sieht nett aus, weil sie da einen Smiley drauf hat, aber vor allem soll sie ihren Text, ihr Label sich aus VBA holen. Und Sie haben es schon bemerkt, es wird die gleiche Prozedur aufgerufen, also Strg+A, Strg+C zum Kopieren und hier einfügen. Und jetzt direkt wieder komprimieren, einen Moment warten und hoffen, keine Fehlermeldung, aber schön erschienen. Der Smiley ist da, das Happy Face, aber wie Sie sehen, heißt das Ding auch Rand & Band. Natürlich, wie soll diese Prozedur das auch unterscheiden, ich muss also mit Alt+F11 in den Code wechseln, nämlich zu den Callbacks und hier eine Unterscheidung machen. Und zwar läuft die über die Control-Id. Ich schreibe also klassischerweise direkt select case und dann control, das ist da oben dieses Objekt mit dem Datentyp IRibbonControl und das kennt eine Id. Sie sehen, das kennt nicht wirklich viel, eigentlich brauchen wir auch nur die Id. die ungeschickter Weise nicht wie man erwartet eine long-Zahl ist, sondern das ist der Name. Das heißt nicht etwa control.name, sondern das ist control.Id, das ist aber nachzuvollziehen, wenn Sie sich noch mal den XML-Code angucken von dem, was ich hier geschrieben habe, dann steht da tatsächlich hier die id beziehungsweise die wird es treffen. Also dieses id ist gemeint, das ist ein Text, ein Name und deswegen kann ich jetzt hier schreiben, case und dann muss ich einfach eben nachgucken, wie heißt es denn, Case btnBeenden oder Case und das war dann die tabRB. Das kann man ein bisschen einrücken und ich schreibe immer ein Case Else dazu. Sie werden gleich sehen, warum. Und das kann man ein bisschen kompakter schreiben, wenn man einen Doppelpunkt macht, darf das in eine Zeile. Da ein bisschen weiter nach hinten mit Tab-Taste und hier auch. Dessen Label soll dann sein, Beenden von und deswegen wollte ich den Text aus VBA bekommen, von diesem, p_c soll das natürlich heißen, dem mit dem Namen. Da steht dann nachher Beenden von Rand & Band. Wenn Sie wollen, können Sie da auch noch Hochkomma drum setzen, das ist ganz normales VBA, damit man das als Namen erkennt. Und beim Case Else schreibe ich schon mal rein, msgbox "Leider daneben" oder wie immer Sie das formulieren wollen, da dürfen Sie auch netter sein zu sich, da nenne ich den control.Id den Namen von diesem Objekt und dann sehen Sie gleich, warum ich das mache. Wenn ich mich nämlich vertippe, dann funktioniert dieses getLabel nicht. Also ich habe hier schon hinterlegt für meine msgbox einen Titel und ich schreibe mal lieber hier davor Fehler in GetLabel, denn Sie erfahren nicht, wo es aufgerufen wurde. Wenn es also keiner von diesen ist, dann gibt es eine Meldung, sonst suchen Sie unnötig lange nach Fehlern. Und jetzt kann ich wieder zurück und das Ganze noch mal starten und Sie sehen jetzt, hier steht der gewünschte Text und hier steht ein anderer. Wenn ich das falsch gemacht hätte, das muss ich hier mal einfach absichtlich verfälschen und habe hier in irgendeiner Form ein Control vergessen oder ich kann es auch andersrum machen, RB hieß es, ich kommentiere diese Zeile, dann wird GetLabel keinen Inhalt finden und ich könnte an der Stelle auch direkt einen Wert zurückgeben, zum Beispiel sowas. Das ist netter beim GetLabel, weil das ganz oft aufgerufen wird und da könnte ich jetzt zum Beispiel control.Id mit zwei Fragezeichen reinschreiben. Und Sie werden gleich sehen, das taucht als Beschriftung auf, also im Moment ist noch alles in Ordnung, im nächsten Durchlauf gibt es keine Message Box, das wäre nämlich sonst ganz furchtbar und hier steht dann das control mit seiner id, was nicht funktioniert hat. Dann weiß ich direkt im Code, wen ich suchen muss, meistens ist es nämlich ein Schreibfehler, dann hat man an dieser Stelle irgendwie vergessen, ein B dranzuhängen oder sowas und jetzt funktioniert es wieder. Das ist also die Sicherheitsmaßnahme hier am Ende, dass ich auf jeden Fall eine Meldung kriege. Das macht die Fehlersuche sonst sehr schwierig. Nächster Durchlauf also sollte wieder alles in Ordnung sein. Da oben steht jetzt, erkannt das control und der hat es entsprechend auch erkannt. Es gibt also im Select Case nachher, da muss man immer wieder hier reinwechseln, eine ganz lange Liste von Case, Name des ersten Controls oder des Steuerelements, Name des Registers oder sowas. Die Reihenfolge ist hier herzlich wurscht, ich schreibe die Register eher nach oben und Sie können auch gerne Leerzeilen zum Unterscheiden dazwischen einfügen, aber es ist jedenfalls an dieser Stelle wichtig, dass die namentlich richtig erkannt werden und deswegen hier sozusagen die Notbremse eingebaut ist.

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!