Deze tutorial leert je hoe je door arrays in VBA kunt lopen.
Er zijn twee primaire manieren om arrays te doorlopen met VBA:
- Voor elke lus - De For Each Loop doorloopt elk item in de array.
- Voor volgende lus - De For Next Loop doorloopt de gespecificeerde start- en eindposities van de array (we kunnen de UBound- en LBound-functies gebruiken om door de hele array te lussen).
Voor elk item in array
De Voor elke lus stelt u in staat om door elk element van de array te lopen.
12345678910111213141516171819 | Sub LoopForArrayStatic()'declareer een variantarray'Dim strNames (1 tot 4) als string'vul de array in'strNames(1) = "Bob"strNames(2) = "Peter"strNames(3) = "Keith"strNames(4) = "Sam"'declareer een variant om het array-element vast te houden'Dim item als variant'loop door de hele array'Voor elk item in strNames'toon het element in het foutopsporingsvenster.Debug.Print itemLusEinde sub |
De bovenstaande procedure doorloopt alle namen in de array.
Voor volgende lus
De For Next Loop doorloopt elk item op een gespecificeerde begin- en eindpositie van de array.
Loop door een deel van array
U kunt de start- en eindposities voor uw lus handmatig opgeven. Dit kan geschikt zijn als u de grootte van uw array weet en/of als u slechts een deel van een array wilt doorlopen.
12345678910111213141516 | Sub LoopForNextStatic()'declareer een variantarray'Dim strNames (1 tot 4) als string'vul de array'strNames(1) = "Bob"strNames(2) = "Peter"strNames(3) = "Keith"strNames(4) = "Sam"'declareer een geheel getal'Dim ik als geheel getal'loop van positie 2 naar positie 3 van de array'Voor i = 2 tot 3'toon de naam in het directe venster'Debug.Print strNames(i)volgende iEinde sub |
In het bovenstaande voorbeeld hebben we posities 2 en 3 van de array doorlopen. Het directe venster zou de namen als volgt retourneren.
Loop door hele array
Vervolgens zullen we de UBound- en LBound-functies gebruiken om een hele array te doorlopen. Dit is erg handig als de begin- en eindposities van de array kunnen veranderen (bijv. een Dynamic Array):
123456789101112131415161718 | Sub LoopForNextDynamic()'declareer een variantarray'Dim strNames() As String'initialiseer de array'ReDim strNames (1 tot 4)'vul de array'strNames(1) = "Bob"strNames(2) = "Peter"strNames(3) = "Keith"strNames(4) = "Sam"'declareer een geheel getal'Dim ik als geheel getal'loop van de ondergrens van de array naar de bovengrens van de array - de hele array'Voor i = LBound(strNames) Naar UBound(strNames)'toon de naam in het directe venster'Debug.Print strNames(i)volgende iEinde sub |