Hoe maak je een dynamische tabel in vba?
Een dynamische array is iets waarbij u de grootte van de array kunt wijzigen en er meer waarde aan kunt toevoegen terwijl u de code uitvoert. In deze zelfstudie onderzoeken we manieren om code te schrijven waarbij u zowel het formaat kunt wijzigen als meer elementen kunt toevoegen.
Maak een dynamische tabel in VBA
- Declareer eerst een array met zijn naam.
- Daarna liet het aantal elementen de haakjes leeg.
- Gebruik nu de ReDim-instructie.
- Geef aan het einde het aantal elementen op dat u aan de array wilt toevoegen.
Dim myArray() As String ReDim myArray(5)
Vergeet niet dit artikel van Joshua over vaste en dynamische array-prestaties te lezen.
Dynamische multidimensionale array
Het voorbeeld dat we gebruikten was een eendimensionale array en op dezelfde manier gebruik je ook de ReDim-instructie om dynamische multidimensionale arrays te maken.
Dim myArray() As String ReDim myArray(5, 8)
Voeg een nieuw element toe aan een dynamische array in VBA
Een dynamische array is zinloos als u er geen nieuw element aan kunt toevoegen. In het komende voorbeeld zullen we zien hoe u nieuwe elementen kunt toevoegen nadat u het aantal elementen in een array opnieuw hebt gedefinieerd.
'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------
Laten we deze code stap voor stap begrijpen.
- In de eerste stap hebt u een array gedeclareerd met de naam “myArray”.
- Daarna heb je twee variabelen om de tellerwaarden voor de lus op te slaan, die je later in de code moet gebruiken om waarden uit het bereik te halen en die waarden als elementen aan de array toe te voegen.
- Dan heb je een regel code om de laatste rij van het bereik te krijgen, zodat je weet welke elementen je aan de array moet toevoegen.
- In de vierde stap gebruikte u de ReDim-instructie om de array-elementen opnieuw te definiëren met behulp van het laatste rijnummer dat u in de vorige stap had verkregen.
- Dan heb je FOR LOOP (For Next) die door het bereik loopt, beginnend bij cel A1, daar waarden vandaan haalt en ze één voor één als elementen aan de array toevoegt.
- Uiteindelijk heb je de Debug.Print-instructie om alle items in het directe venster af te drukken.
En wanneer ik een nieuwe waarde aan het bereik toevoeg en de code opnieuw uitvoer, wordt dat element automatisch aan de array toegevoegd en wordt het afgedrukt in het directe venster .