VBA Loop Through Array / För varje artikel i Array

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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave