Hoe krijg ik de lengte van een array met vba?

In VBA betekent het verkrijgen van de lengte van een array het tellen van het aantal elementen dat je in die array hebt. Hiervoor moet je het laagste element en het hoogste element kennen. Om dit te krijgen, kunt u de functies UBOUND en LBOUND gebruiken, die respectievelijk de bovengrens en de ondergrens retourneren.

Daarnaast kunt u ook COUNTA gebruiken, een spreadsheetfunctie. En in deze tutorial zullen we beide methoden zien, zodat u ze allemaal naar eigen inzicht kunt gebruiken.

Stappen om de grootte van een array te bepalen

Hier hebben we een tabel met een lijst met maanden en de verkoophoeveelheid voor elke maand.

vba-array-lengte
  1. Zorg ervoor dat u een correct gedeclareerde tabel met rijen en kolommen heeft.
  2. Daarna nog twee variabelen (omdat we een tweedimensionale array hebben) om de grenzen van de array op te slaan.
  3. Vervolgens moet u een formule gebruiken waarin u de Ubound-functie moet gebruiken om de bovengrens te krijgen en vervolgens Lbound om de ondergrens van de array te krijgen.
  4. Omdat je een tweedimensionale array hebt, moeten jullie allebei gebonden zijn aan dimensies en deze waarde instellen op de variabelen.
  5. Vermenigvuldig aan het einde de lengtes die je hebt gekregen van Ubound en Lbound als boven- en ondergrens.

Hier is de volledige code.

 Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2

Opmerking: u vraagt zich vast af of we in totaal 13 rijen hebben in de tabel die ik aan het begin van het artikel met u deelde.

Maar we gebruikten een tabel met 13 rijen omdat de eerste rij een titel was. En hier hebben we een IF STATEMENT- en ISEMPTY- functie gebruikt om te controleren of de gedeclareerde array geen elementen bevat.

 Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."

COUNTA gebruiken om de arraylengte te verkrijgen

Zoals u weet, is een array een reeks elementen die op een eendimensionale of multidimensionale manier zijn gestructureerd en kunt u de functie COUNTA ( spreadsheetfunctie ) gebruiken om deze elementen in één keer te tellen.

In de volgende code gebruikte je dezelfde array die je eerder had gedeclareerd en gebruikte je vervolgens een variabele om het aantal elementen op te slaan dat door de functie werd geretourneerd.

En zoals je kunt zien, is het resultaat dat het retourneert 24, wat het totale aantal elementen is dat we in de array hebben.

 Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount

Er is één ding waar je voor moet zorgen, deze methode zal niet in elke situatie ideaal zijn, dus het is altijd goed om de methode te gebruiken die we eerder hebben besproken.

U kunt ook code schrijven om eerst te controleren of de gedeclareerde array niet leeg is.

 Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."

Voeg een reactie toe

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *