VBA Dynamic Array (Redim & Redim Preserve)

Deze zelfstudie laat zien hoe u dynamische arrays (redim en redim preserve) in VBA kunt gebruiken.

Dynamische matrix

Dynamische arrays zijn arrays die van grootte kunnen veranderen (in tegenstelling tot statische arrays, die statisch zijn).

Om een ​​dynamische array te declareren, declareer je de array, maar laat je de arraygrootte weg:

1 Dim strNames() As String

Vervolgens, voordat u waarden aan uw array kunt toewijzen, moet u de ReDim-instructie gebruiken om de array op de gewenste grootte in te stellen:

1 ReDim strNames (1 tot 3)

Nu, wanneer u uw arraygrootte wilt wijzigen, gebruikt u gewoon ReDim (of ReDim Preserve zoals we hieronder zullen leren).

Dynamische variantarrays

Opmerking: Variant-arrays zijn een beetje anders. Bij variantarrays hoeft u de arraygrootte niet in te stellen met ReDim voordat u waarden toewijst.

12345678 Sub TestArray()'declareer de variabele'Dim varNames() als variant'vul de array'varNames() = Array("Fred", "Wilma", "Barney", "Betty")'geef de waarden terug'MsgBox Join(varNames, ",")Einde sub

Redim vs. Redim Preserve

De ReDim statement wijzigt de grootte van een array, opruimen alle bestaande waarden.

De ReDim behouden statement wijzigt de grootte van een array, houden (“behouden”) van alle bestaande waarden.

ReDim gebruiken

In de praktijk ziet het formaat van een array met ReDim er als volgt uit:

123456789101112 SubtestReDim()'declareer de tekenreeksarray'Dim strNames() As String'wijzig de grootte van de stringarray om 3 waarden te kunnen bevatten'ReDim strNames (1 tot 3)'vul de array met 3 namen'strNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'toon het resultaat in het directe venster'Debug.Print Join (strNames, vbCrLf)Einde sub

ReDim Preserve gebruiken

In dit voorbeeld gebruiken we ReDim om de initiële dynamische array in te stellen en vervolgens ReDim Preserve om de grootte van de array te wijzigen, houden de originele waarden:

1234567891011121314151617 SubtestReDim()'declareer de tekenreeksarray'Dim strNames() As String'wijzig de grootte van de stringarray om 3 waarden te kunnen bevatten'ReDim strNames (1 tot 3)'vul de array'strNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'toon het resultaat in het directe venster'Debug.Print Join (strNames, vbCrLf)'redim maar bewaar de gegevens'ReDim Behoud strNames (1 tot 4)strNames(4) = "Fred"'toon het resultaat in het directe venster'Debug.Print Join (strNames, vbCrLf)Einde sub

Als u geen gebruik maakt van de BESCHERMEN statement, verliest u de gegevens die eerder in de array stonden.

In het onmiddellijke venster hierboven, bevolkte de array Mel, Steve en Bob. Toen het opnieuw werd gedeclareerd, verwijderde het die waarden en retourneerde het in plaats daarvan 3 lege waarden en vervolgens de waarde 'Fred'. Dit komt door de BESCHERMEN verklaring wordt weggelaten.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave