Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
GrundlagenSchleifen (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.
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
Weitere Artikel der Gruppe: Grundlagen Aus Excel VBA
Nach oben