Verwenden Sie for Each auf einem Array mit VBA

Bilal Shahid 21 Juni 2023
Verwenden Sie for Each auf einem Array mit VBA

Es gibt zwei Arten von For-Schleifen in VBA:

  1. Schleife Für jeden
  2. 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:

  1. Erstellen Sie eine Subroutine, die den Parameter als Wert nimmt, wie im obigen Beispiel definiert, ByVal ele As String.
  2. Konvertieren Sie andernfalls die Variant in einen String-Datentyp, bevor Sie sie an die Subroutine übergeben. Hier ist das Code-Snippet zum Konvertieren des Elements 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.

Bilal Shahid avatar Bilal Shahid avatar

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

Verwandter Artikel - VBA Array