Bereits ohne den Einsatz von VBA können Sie das Registersteuerelement prima nutzen, um die Steuerelemente eines Formulars platzsparend auf mehrere Registerseiten aufzuteilen. Aber erst VBA entfaltet die vollen Möglichkeiten dieses Steuerelements: Sie können damit programmgesteuert ermittelten, welche Registerseite gerade aktiv ist, diese automatisch einstellen oder sogar per VBA Registerseiten hinzufügen und entnehmen, wenn Sie dies nicht von Hand erledigen möchten.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1212_RegistersteuerelementPraxis.mdb.
Registersteuerelement programmieren
Bevor wir zu den Praxisbeispielen kommen, schauen wir uns an, wie Sie das Aussehen, das Verhalten und die Interaktion des Registersteuerelements per VBA beeinflussen können.
Aktuelle Seite abfragen
Wenn Sie für ein Registersteuerelement namens tab-BeispielVBA in einem Formular wie frmBeispiel-VBA aus Bild 1 die aktuell angezeigte Seite abfragen möchten, erledigen Sie dies etwa im Direktfenster mit folgender Anweisung:
Bild 1: Beispielregistersteuerelement
Debug.Print Forms!frmBeispielVBA!tabBeispielVBA.Value
0
Ist die erste Seite aktiviert, liefert dies den Index der Seite, nämlich 0. Für die zweite Seite würde dies den Wert 1 liefern und so weiter. Da Value die Standardeigenschaft dieses Steuerelements ist, können Sie auch die Kurzform ohne Angabe der Eigenschaft verwenden:
Debug.Print Forms!frmBeispielVBA!tabBeispielVBA
Aktuelle Seite einstellen
Wenn Sie per VBA die aktuell sichtbare Registerseite einstellen möchten, gelingt dies auf ähnliche Weise, wie dieser Aufruf zeigt – ebenfalls testweise im Direktfenster abzusetzen:
Forms!frmBeispielVBA!tabBeispielVBA = 0
Damit aktivieren Sie die erste Registerseite, durch die Angabe anderer Werte die entsprechend indizierte Seite.
Informationen einer Seite ermitteln
Wenn Sie Informationen wie Name, Beschriftung et cetera einer bestimmten Seite des Registersteuerelements ermitteln möchten, können Sie dies mit der Pages-Auflistung erledigen. Damit greifen Sie über den Index oder den Namen der Registerseite auf alle enthaltenen Seiten zu.
Den Namen der ersten Registerseite erhalten Sie über das Direktfenster etwa so:
Forms!frmBeispielVBA!tabBeispielVBA.Pages(0).Name pge1
Die Beschriftung erhalten Sie auf ähnliche Weise:
Forms!frmBeispielVBA!tabBeispielVBA.Pages(0).Caption
Die Beschriftung etwa der ersten Seite des Registersteuerelements stellen Sie wie folgt ein:
Forms!frmBeispielVBA!tabBeispielVBA.Pages(0)._ Caption = "Seite 1"
Informationen zu allen Seiten, die sich aktuell im Registersteuerelement befinden, können Sie mit einer For Each-Schleife durchlaufen und ausgeben (diese Prozedur finden Sie im Beispielformular frmBeispielVBA):
Private Sub cmdAlleSeitennamen_Click() Dim pge As Page For Each pge In Me.tabBeispielVBA.Pages Debug.Print pge.Name Next pge End Sub
Aktuelle Seite beim Klicken ausgeben
Wenn Sie beim Wechseln der Registerseite auswerten möchten, welche die aktuelle Seite ist, legen Sie dafür eine entsprechende Ereignisprozedur an. Aber für welches Ereignis Das Registersteuerelement liefert zwei, die dafür in Frage kommen könnten – Beim Klicken und Bei änderung.
Um herauszufinden, welches Ereignis beim Wechseln der Registerseite ausgelöst wird, legen Sie einfach für beide Ereigniseigenschaften den Wert [Ereignisprozedur] an und klicken je einmal auf die Schaltfläche mit den drei Punkten, um die entsprechende Ereignisprozedur anzulegen (siehe Bild 4).
Bild 2: Anlegen von Ereignisprozeduren für die Ereigniseigenschaften des Registersteuerelements
Fügen Sie im VBA-Editor für beide Prozeduren einen Haltepunkt hinzu, indem Sie auf die graue Leiste links vom Code klicken (siehe Bild 2).
Bild 3: Ereignisprozeduren mit Haltepunkten
Zeigen Sie das Formular dann in der Formularansicht an und wechseln Sie die Registerseite. Dies öffnet den VBA-Editor, wobei die Prozedur tabBeispielVBA_Change gelb markiert ist (siehe Bild 3). Ein Klick auf die Taste F5 lässt den Code weiterlaufen. Die Prozedur tabBeispielVBA_Click wird jedoch nicht mehr gestartet. Dies bedeutet, dass nur das Ereignis Beim ändern durch den Wechsel der Registerseite ausgelöst wird.
Bild 4: Nur diese Prozedur wird beim Wechsel der Registerseite ausgelöst.
Fügen wir dieser Prozedur doch eine Anweisung hinzu, welche den Index der aktuellen Registerseite in einem Meldungsfenster ausgibt:
Private Sub tabBeispielVBA_Change() MsgBox Me!tabBeispielVBA End Sub
Danach wollen wir aus dem Indexwert noch den Namen der Registerseite sowie die Beschriftung entnehmen. Dies gelingt durch die folgende Erweiterung – diesmal mit Debug.Print zur Ausgabe im Direktfenster:
Private Sub tabBeispielVBA_Change() Debug.Print Me!tabBeispielVBA, _ Me!tabBeispielVBA.Pages(Me!tabBeispielVBA).Name End Sub
Der erste Ausdruck liefert den Index (also den Wert der Value-Eigenschaft), der zweite Ausdruck den Namen der Registerseite. Dazu verwendet er die Pages-Auflistung, über die Sie mit der Angabe des Indexwertes auf alle Registerseiten zugreifen können. Name wiederum gibt den Namen des Registerseite-Elements aus.
Wann aber wird die Beim Klicken-Ereigniseigenschaft des Registersteuerelements ausgelöst Dies gelingt ausschließlich, wenn Sie auf den freien Bereich im Kopf des Registersteuerelements klicken.
Registersteuerelement als Assistent
Die einzelnen Seiten des Registersteuerelements eignen sich hervorragend, um die einzelnen Schritte eines Assistenten abzubilden. Das gilt insbesondere, da Sie die Steuerelemente zum Abarbeiten der einzelnen Schritte so bequem auf verschiedenen Seiten des Registersteuerelements unterbringen und Schritt für Schritt bearbeiten können.
Bild 5 zeigt ein schematisches Beispiel für einen solchen Assistenten. Hier wird vereinfachend nur je ein Text auf jeder Seite des Assistenten angezeigt. Der Benutzer soll mit den beiden Schaltflächen Zurück und Weiter durch die einzelnen Schritte navigieren können. Die Besonderheit ist, dass nicht nur das Anklicken der beiden Schaltflächen die Anzeige der aktuellen Seite des Registersteuerelements beeinflussen soll. Andersherum soll die Zurück-Schaltfläche bei aktivierter erster Registerseite deaktiviert werden, denn weiter zurück kann der Benutzer an dieser Stelle nicht mehr gehen (siehe Bild 6). Und die Weiter-Schaltfläche soll, wenn der Benutzer die letzte Seite des Assistenten aufgerufen hat, den Text Beenden erhalten und umgekehrt (siehe Bild 7).
Bild 5: Beispiel für den Einsatz in einem Assistenten
Bild 6: Ausblenden der Zurück-Schaltfläche für den ersten Schritt
Bild 7: ändern der Beschriftung der Weiter-Schaltfläche im letzten Schritt des Assistenten
Damit dies gleich mit dem Laden des Formulars reibungslos klappt, ruft die durch die Ereigniseigenschaft Beim Laden ausgelöste Prozedur Form_Load eine weitere Prozedur namens SchaltflaechenEinstellen auf:
Private Sub Form_Load() Call SchaltflaechenEinstellen End Sub
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: