Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Die For…Next-Schleife ist Ihnen längst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1110_ForEach.mdb.
Jeder nur einmal!
Die For Each-Schleife ist bestens dazu geeignet. Elemente von Auflistungen unter VBA zu durchlaufen. Auflistungen Was für Auflistungen Nun: In objektorientierten Sprachen, wie es auch VBA teilweise ist, gibt es nicht nur Objekte mit bestimmten Eigenschaften (wie Formulare, Steuerelemente, Datenbanken oder Tabellen), sondern auch Objekte, die den Zugriff auf solche Elemente etwa über die Angabe eines Indexes erlauben.
Offene Formulare durchlaufen
Wenn Sie beispielsweise einmal wissen möchten, welche Formulare aktuell in Ihrer Datenbank geöffnet sind, hilft Ihnen eine For Each-Schleife weiter. Die Auflistung AllForms des CurrentProject-Objekts liefert die notwendigen Daten. Mit der folgenden Anweisung können Sie etwa im Direktfenster die Anzahl der Formulare der aktuellen Datenbank abfragen:
CurrentProject.AllForms.Count 4
Nun wollen Sie aber alle Formulare durchlaufen und deren Namen ausgeben. Um dies innerhalb einer For Each-Schleife durchzuführen, brauchen Sie zunächst einmal eine Objektvariable als Laufvariable. In diesem Fall verwenden Sie dazu ein Objekt des Typs AccessObject:
Dim frm As AccessObject
Wie finden Sie den Typ heraus Ganz einfach: öffnen Sie den Objektkatalog von Access mit der Tastenkombination F2, suchen Sie dort nach der Auflistungsklasse (hier AllForms) und klicken Sie auf die Eigenschaft, die so aussieht, als ob sie einen Verweis auf eines der enthaltenen Elemente zurückliefern könnte – in diesem Fall also Item. Ganz unten erfahren Sie dann, dass Item den Typ AccessObject besitzt (siehe Bild 1).
Bild 1: Der Objektkatalog hilft, den Typ eines Auflistungsobjekts zu ermitteln.
Damit können Sie dann die For Each-Schleife zusammensetzen, die wie folgt aussieht:
For Each frm In CurrentProject.AllForms Debug.Print frm.Name Next frm
Diese Schleife durchläuft alle Elemente der AllForms-Auflistung und weist das jeweils aktuelle Element der Variablen frm zu. Damit können Sie dann innerhalb der Schleife anstellen, was Sie möchten. Gut, es gibt eine Ausnahme: das Löschen der enthaltenen Elemente geht auf diese Weise schief.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo