Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Grundlagen

Schleifen (3) - For Each Schleife

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --Gruppenthema: 3 Folgen 1 2 3 Sie sind in Folge:3
Die Objektzugreifende For - Each Schleife

Die For Each Schleife ist sehr nützlich, wenn man Mitglieder einer Gruppe durchlaufen will und es einem egal ist, welche Position diese haben.
Vom Prinzip ist es so:

For each Mitglied In Gruppe
  Machwas
Next Mitglied

Schauen wir uns zwei Beispiele an:

Public Sub NurTabellenBlattNamen()
    Dim g As Worksheet
    For Each g In ThisWorkbook.Worksheets
        MsgBox g.Name
    Next g
End Sub

Public Sub BlattNamen()
    Dim g As Object
    For Each g In ThisWorkbook.Sheets
        MsgBox g.Name
    Next g
End Sub

In der ersten Prozedur lassen wir uns alle Worksheet Namen ausgeben.
Wir dimensionieren g als Worksheet, damit haben wir auch die Intellisense zur Verfügung.
(Kopieren Sie den Code nicht sondern schreiben Sie ihn, dann wird es deutlich!)

In der zweiten Prozedur greifen wir auf das Sheetobject zu.
Da dies ein multiples Objekt ist (kann ein Worksheet sein, ein Chart, ...) dimensionieren wir g diesmal als Object (als Variant wäre natürlich auch zugelassen).
Diesmal steht uns nicht die Intellisense zur Verfügung, weil das Object nicht klar ist.

Hier müssen wir natürlich aufpassen, dass wir auch nur Eigenschaften/Methoden ansprechen, die allgemeingültig für das multiple Object sind. Ein Worksheet hat z.B. Zellen aber ein Chart nicht. Aber alle Sheets haben die Eigenschaft Namen.

 Peter Haserodt
  • Formelhilfe
  • Makroentwicklung
  • VBA-Programmierung
  • + + + + + + + + +
Es gibt viele nützliche Anwendungsmöglichkeiten der For Each Schleife, aber man sollte sie auch nicht überstrapazieren.
Als Beispiel kann man sich überlegen:

Durchlaufe alle Controls einer Userform und wenn diese eine Textbox sind, mach irgendwas damit.

Hier überlasse ich Sie aber weitgehend Ihrem Schicksal, denn die For Each Schleife ist vom Prinzip simple und muss von Ihnen nur ein bisserl erforscht werden.

Noch ein kleiner Hinweis:

Ich kann auch Arrays damit durchlaufen. Einfach ein kleines Beispiel und damit soll es genug sein.
Public Sub DurchArray()
    Dim MeinFeld, g
    MeinFeld = Array(1, 2, 3)
    For Each g In MeinFeld
        Debug.Print g
    Next g
End Sub
Letztendlich sind die Elemente eines Arrays ja auch irgendwie Objekte


Dieses Thema hat weitere Beiträge

Schleifen (1) - For - Next Zählschleife
Schleifen (2) - Do Schleifen
Schleifen (3) - For Each Schleife

Weitere Artikel der Gruppe: Grundlagen Aus Excel VBA
Nach oben