Denna handledning lär dig hur du går igenom matriser i VBA.
Det finns två primära sätt att gå igenom matriser med VBA:
- För varje slinga - För varje loop går igenom varje objekt i matrisen.
- För nästa loop - For Next Loop kommer att gå igenom angivna start- och slutpositioner för matrisen (Vi kan använda UBound- och LBound -funktionerna för att gå igenom hela arrayen).
För varje objekt i matrisen
De För varje slinga gör att du kan gå igenom varje element i matrisen.
12345678910111213141516171819 | Sub LoopForArrayStatic ()'deklarera en variantmatrisDim strNames (1 till 4) som sträng'fyll i matrisenstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'deklarera en variant för att hålla arrayelementetDim objekt som variant'gå igenom hela matrisenFör varje objekt i strNames'visa elementet i felsökningsfönstret.Debug.Print -objektSlingaAvsluta Sub |
Ovanstående procedur går igenom alla namn i matrisen.
För nästa loop
For Next Loop går igenom varje objekt vid en angiven start- och slutposition för matrisen.
Loop Through Part of Array
Du kan manuellt ange start- och slutpositioner för din loop. Detta kan vara lämpligt om du känner till din matrisstorlek och/eller om du bara vill gå igenom en del av en array.
12345678910111213141516 | Sub LoopForNextStatic ()'deklarera en variantmatrisDim strNames (1 till 4) som sträng'fyll i matrisenstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'deklarera ett heltalDim i As Integer'loop från position 2 till position 3 i arrayenFör i = 2 till 3'visa namnet i det omedelbara fönstretDebug.Print strNames (i)Nästa iAvsluta Sub |
I exemplet ovan har vi gått igenom positionerna 2 och 3 i matrisen. Det omedelbara fönstret skulle returnera namnen enligt följande.
Slinga genom hela matrisen
Därefter använder vi UBound- och LBound -funktionerna för att gå igenom en hel matris. Detta är oerhört användbart om matrisens start- och slutposition kan ändras (t.ex. en dynamisk matris):
123456789101112131415161718 | Sub LoopForNextDynamic ()'deklarera en variantmatrisDim strNames () Som sträng'initiera matrisenReDim strNames (1 till 4)'fyll i matrisenstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'deklarera ett heltalDim i As Integer'loop från matrisens nedre gräns till arrayens övre gräns - hela arrayenFör i = LBound (strNames) To UBound (strNames)'visa namnet i det omedelbara fönstretDebug.Print strNames (i)Nästa iAvsluta Sub |