Das Registersteuerelement in der Praxis

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:

Beispielregistersteuerelement

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).

Anlegen von Ereignisprozeduren für die Ereigniseigenschaften des Registersteuerelements

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).

Ereignisprozeduren mit Haltepunkten

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.

Nur diese Prozedur wird beim Wechsel der Registerseite ausgelöst.

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).

Beispiel für den Einsatz in einem Assistenten

Bild 5: Beispiel für den Einsatz in einem Assistenten

Ausblenden der Zurück-Schaltfläche für den ersten Schritt

Bild 6: Ausblenden der Zurück-Schaltfläche für den ersten Schritt

ändern der Beschriftung der Weiter-Schaltfläche im letzten Schritt des Assistenten

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:

Schreibe einen Kommentar