Verwenden Sie for Each auf einem Array mit VBA
Es gibt zwei Arten von For
-Schleifen in VBA:
- Schleife
Für jeden
For To Next
-Schleife
Dieser Artikel beschreibt die Verwendung einer For Each
-Schleife auf einem Array. Der Artikel enthält auch ein Beispiel für die For To Next
-Schleife.
Verwenden Sie For Each
auf einem Array mit VBA
Beispiel 1:
Um eine For Each
-Schleife auf einem Array zu durchlaufen, können wir die folgende Syntax verwenden:
Public Sub sampleProgram()
Dim arr(7) As String
Dim element As Variant
For Each element In arr
func1 element
Next element
End Sub
Sub func1(ByVal ele As String)
End Sub
Der Code mag überwältigend erscheinen; Es wurde jedoch unten beschrieben, um Ihnen zu helfen, jede Aussage genau zu verstehen.
Es ist wichtig, das Array zuerst zu deklarieren, um mit einer For Each
-Schleife über ein Array zu iterieren. Sie können ein Array eines beliebigen Datentyps deklarieren; für dieses Beispiel wurde das Array arr
als String mit 7 Elementen deklariert.
Damit das Array als Iterator für For Each
funktioniert, wird die Variable element
als Typ Variant
deklariert. Die Variable element
wird dann als Iterator verwendet, der den Wert aus dem Array arr
nimmt und über das Array iteriert.
Innerhalb der Schleife wird ein Unterprogramm func1()
verwendet, das als Parameter das iterierende Element des Arrays arr
übernimmt. Das element
ist vom Datentyp Variant
, weil es als Iterator für die For Each
-Schleife fungiert.
Bei der Übergabe von element
an func1()
als Parameter muss darauf geachtet werden, dass func1()
einen Parameter vom Typ Variant
akzeptiert. Dafür können zwei Dinge getan werden:
- Erstellen Sie eine Subroutine, die den Parameter als Wert nimmt, wie im obigen Beispiel definiert,
ByVal ele As String
. - Konvertieren Sie andernfalls die
Variant
in einen String-Datentyp, bevor Sie sie an die Subroutine übergeben. Hier ist das Code-Snippet zum Konvertieren desElements
in einen String-Datentyp:
func1 CStr(element)
func1()
im Codebeispiel ist eine Unterroutine, die in der For Each
-Schleife über jedem Array-Wert aufgerufen wird. Als Dummy wurde dieses Unterprogramm für den Benutzer leer gehalten.
Es kann mit den erforderlichen Arbeiten gefüllt werden. Ansonsten kann der Unterprogrammaufruf in der For Each
-Schleife auch weggelassen werden.
Beispiel 2:
Das zweite Beispiel behandelt die For To Next
-Schleife als Alternative zur oben diskutierten For Each
-Schleife.
Die For Each
-Schleife ist um die Sammlung von Objekten herum strukturiert. Wie im ersten Beispiel besprochen, wird eine Variable vom Datentyp Variant
oder ein Objekt als Iterator für die Schleife verwendet.
Wenn eine Funktion verwendet wird, muss sie außerdem Parameter vom Typ Variant
akzeptieren.
Die For To Next
-Schleife funktioniert anders.; es verwendet die oberen und unteren Grenzen des Arrays. Zusätzlich wird eine Variable vom Typ Integer
verwendet, um die Schleife zu durchlaufen, mit der auch auf jedes Element des Arrays zugegriffen werden kann.
Hier ist ein Codeschnipsel:
Public Sub sampleProgram()
Dim arr(7) As String
Dim i As Long
For i = LBound(arr) To UBound(arr)
func1 arr(i)
Next i
End Sub
Im sampleProgram()
wurde ein Array als arr
vom Datentyp String
deklariert. Es wurde ein Iterator i
vom Datentyp Long
deklariert, um das Array zu durchlaufen.
Wie bereits erwähnt, werden die unteren und oberen Grenzen des Arrays mithilfe bestimmter Funktionen berechnet. Die For To Next
-Schleife wird für die definierte Anzahl von Wiederholungen wiederholt und ruft bei jeder Iteration die Subroutine func1()
auf.
Der Wert am spezifischen Array-Element arr(i)
wird als Parameter an func1()
übergeben; daher gibt es keine Probleme mit dem Datentyp Variant
.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub