Inhoudsopgave
Een array is een variabele die dezelfde soorten gegevens bewaart. Als er slechts één rij of één kolom met gegevens is, dan heet het een ééndimensionale array. Als er echter meer dan één rij en kolom zijn, dan heet het een 2D array. We gebruiken ReDim om de grootte van een matrix in VBA aan te passen. Bovendien gebruiken we de Behoud sleutelwoord met de ReDim om de oude gegevens intact te houden. Dit artikel zal u laten zien 2 snelle manieren om " ReDim Preserve " a 2D matrix in Excel VBA .
Download Praktijk Werkboek
Macro naar ReDim behoud 2D.xlsm
2 Handige methodes voor ReDim behoud van 2D array in Excel VBA
Dit is de basisdataset die is gemaakt van een 2D matrix met drie rijen en twee kolommen. Eerst maken we deze matrix aan. Vervolgens voegen we nog een kolom toe aan deze matrix. We gebruiken de " ReDim Preserve " om dit te doen. Bovendien zullen we demonstreren wat er gebeurt als we dit niet gebruiken.
Standaard kunnen we alleen de laatste dimensie van de matrix wijzigen (d.w.z. de kolommen of de bovengrens). We zullen de matrix transponeren, dan de laatste dimensie wijzigen, en dan opnieuw transponeren om de grootte van beide dimensies van de 2D matrix in Excel VBA.
1. ReDim Behoud laatste dimensie 2D-array
We zullen eerst de 2D matrix als dynamisch. Dan, met behulp van de ReDim statement, maken we een array met drie rijen en twee kolommen. Tenslotte gebruiken we de ReDim verklaring opnieuw met de Behoud trefwoord om de bovengrens van de tweedimensionale matrix te verhogen.
Stappen:
- Om te beginnen drukt u op ALT+F11 om de VBA-module U kunt dit ook doen vanuit het Ontwikkelaar tabblad → selecteer Visual Basic .
- Dan, van de Plaats tabblad → selecteer Module We typen hier de VBA-code.
- Typ vervolgens de volgende code in de Module raam.
Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub
VBA-code opsplitsing
- Ten eerste roepen we de Subprocedure " Redim_Preserve_2D_Array_Row ".
- Dan declareren we de variabele Onze reeks als een dynamische matrix.
- Vervolgens bepalen we de grootte van de matrix. De ondergrens is 3 is de bovengrens 2 en beide beginnen bij 1 .
- Dan wijzen we waarden toe aan de array.
- Daarna voeren we de waarden in in de C6:D8 celbereik.
- Daarna gaan we de code uitvoeren.
- Dus, Sla de Module en druk op Ren .
- Als resultaat zal het de waarden teruggeven aan de gedefinieerde celbereiken. We kunnen zien dat " Rachel " is in de rij 1 en kolom 1 positie, die werd gedefinieerd als ( 1,1 ) in de VBA-code.
- Nu gaan we de grootte van de array aanpassen.
- Voeg dit dus toe aan de vorige code en verwijder de eerste Range.Value verklaring Bovendien ziet de code eruit zoals u kunt zien in het onderstaande snapshot.
ReDim Our_Array(1 tot 3, 1 tot 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array
- Hier hebben wij de bovengrens verhoogd van ( 1 Naar 2 ) naar ( 1 Naar 3 ) door 1 .
- Vervolgens hebben we de waarden toegevoegd aan de array.
- Als we nu deze code uitvoeren, dan zullen we zien dat de vorige waarden niet bewaard blijven. De vorige waarden zullen leeg zijn.
- Nu kunnen we dit oplossen door de Bewaar sleutelwoord in de ReDim verklaring .
- Uiteindelijk zal onze volledige code dit zijn.
Option Expliciet Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =.Our_Array End Sub
- Nu, als we Ren deze code, dan zal de output er zo uitzien. Dus, we zullen " ReDim Preserve "de laatste dimensie van een 2D matrix in Excel VBA. De volgende methode laat zien hoe je " ReDim Preserve " en de grootte van beide dimensies van de matrix aanpassen.
Lees meer: VBA om unieke waarden uit een kolom in een matrix in Excel te krijgen (3 criteria)
Vergelijkbare lezingen
- Hoe een tabelarray in Excel een naam geven (met eenvoudige stappen)
- Excel VBA om CSV-bestand in een matrix te lezen (4 ideale voorbeelden)
- Hoe bereik converteren naar array in Excel VBA (3 manieren)
- Excel VBA: Duplicaten verwijderen uit een matrix (2 voorbeelden)
2. ReDim behoud beide dimensies 2D array in Excel VBA
In deze laatste methode tonen wij u de stappen om het formaat te wijzigen en " ReDim Preserve " de 2D matrix Hier gebruiken we de VBA Transponeren functie om de ondergrens van de array aan te passen. Als we de ondergrens van de array in de eerste methode proberen aan te passen, zien we de " Subscript buiten bereik " fout. Nu, zonder verder oponthoud, laten we kijken hoe we dit kunnen oplossen en ons doel kunnen bereiken.
Stappen:
- Ten eerste, zoals in de eerste methode breng de Module raam.
- Voeg ten tweede de volgende regels code toe aan de eerste code.
Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array
- Bovendien ziet de code voor de laatste methode er als volgt uit.
Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub
VBA-code opsplitsing
- Ten eerste roepen we de Subprocedure " ReDim_Preserve_2D_Array_Both_Dimensions ".
- Dan, de rest van de codes tot aan de VBA Transponeren functie zijn dezelfde als in de eerste code.
- Hier transponeren we de matrix.
- Dan verhogen we de bovengrens van de matrix.
- Daarna transponeren we de matrix opnieuw. Daarom zal uiteindelijk de ondergrens veranderen.
- Vervolgens voeren we de waarden in voor de aangepaste matrix met behoud van de oude gegevens.
- Tenslotte schrijven we de waarden naar het celbereik C6:E9 .
- Daarna, zoals in de eerste methode , Ren deze code.
- Zo kunnen we visualiseren hoe de code een 2D matrix met behulp van de " ReDim Preserve "en de VBA Transponeren functie.
Lees meer: VBA om Array in Excel te transponeren (3 methoden)
Dingen om te onthouden
- ReDim Preserve kan de ondergrens van de array niet veranderen. Om dat te doen, moeten we de Transponeer functie.
- We kunnen alleen ReDim op dynamische matrices.
Conclusie
We hebben u twee snelle manieren getoond om " ReDim Preserve " a 2D array Als u problemen ondervindt met deze methoden of als u feedback voor mij hebt, kunt u hieronder commentaar geven. Bovendien kunt u onze site bezoeken ExcelWIKI voor meer Excel-gerelateerde artikelen. Bedankt voor het lezen, blijf uitblinken!