Hoe om ReDim Preserveer 2D Array in Excel VBA (2 maklike maniere)

  • Deel Dit
Hugh West

'n Skikking is 'n veranderlike wat dieselfde soort data hou. As daar net een ry of een kolom data is, staan ​​dit bekend as 'n eendimensionele skikking. Wanneer daar egter meer as een ry en kolom is, word dit 'n 2D-skikking genoem. Ons gebruik ReDim om die grootte van 'n skikking in VBA te verander. Daarbenewens gebruik ons ​​die Bewaar sleutelwoord met die ReDim om die ou data ongeskonde te hou. Hierdie artikel sal jou 2 vinnige maniere wys om ' ReDim Preserve ' 'n 2D-skikking in Excel VBA .

Laai oefenwerkboek af

Makro om ReDim Preserve 2D.xlsm

2 handige benaderings tot ReDim Preserve 2D Array in Excel VBA

Dit is die basisdatastel geskep uit 'n 2D-skikking met drie rye en twee kolomme. Eerstens sal ons hierdie skikking skep. Dan sal ons nog 'n kolom by hierdie skikking voeg. Ons sal die " ReDim Preserve " gebruik om dit te doen. Daarbenewens sal ons demonstreer wat gebeur as ons dit nie gebruik nie.

By verstek kan ons net die grootte van die laaste dimensie van die skikking verander (d.i. die kolomme of die boonste grens). Ons sal die skikking transponeer, dan die laaste dimensie verander, en dan weer transponeer om beide dimensies van die 2D-skikking in Excel VBA te verander.

1 ReDim Preserveer Laaste Dimensie 2D-skikking

Ons sal eers die 2D-skikking as dinamies definieer. Dan, deur die ReDim -stelling te gebruik, sal ons 'nskikking met drie rye en twee kolomme. Laastens sal ons die ReDim -stelling weer gebruik met die Preserve sleutelwoord om verhoog die boonste grens van die tweedimensionele skikking.

Stappe:

  • Om mee te begin, druk ALT+F11 om die VBA Module -venster op te roep. Alternatiewelik kan jy dit doen vanaf die Ontwikkelaar -oortjie → kies Visual Basic .
  • Dan, vanaf die Voeg oortjie in → kies Module . Ons sal die VBA-kode hier tik.

  • Volgende, tik die volgende kode in die Module venster.
2093

VBA-kode-ontleding

  • Eerstens bel ons die Subprosedure " Redim_Preserve_2D_Array_Row ".
  • Dan verklaar ons die veranderlike Our_Array as 'n dinamiese skikking.
  • Volgende definieer ons die grootte van die skikking. Die ondergrens is 3 , die boonste grens is 2 , en albei begin vanaf 1 .
  • Dan ken ons waardes aan die skikking toe .
  • Daarna voer ons die waardes in die C6:D8 selreeks in.
  • Daarna het ons sal die kode uitvoer.
  • Dus, Stoor die Module en druk Run .

  • Gevolglik sal dit die waardes terugstuur na die gedefinieerde selreekse. Ons kan sien dat " Rachel " in ry 1 en kolom 1 posisie is,wat gedefinieer is as ( 1,1 ) in die VBA-kode.

  • Nou sal ons die grootte van die skikking verander.
  • Dus, voeg dit by die vorige kode en verwyder die eerste Range.Value-stelling . Verder, hoe die kode lyk, kan jy uit die foto hieronder sien.
5581

  • Hier het ons die boonste grens verhoog vanaf ( 1 To 2 ) tot ( 1 To 3 ) deur 1 .
  • Dan het ons die waardes by die skikking gevoeg.
  • As ons nou hierdie kode uitvoer, sal ons sien dat die vorige waardes nie behoue ​​bly nie. Dit sal leeg terugstuur vir die vorige waardes.

  • Nou kan ons dit regstel deur die Preserveer sleutelwoord by die ReDim-stelling .
  • Uiteindelik sal ons volle kode dit wees.
5288

  • Nou, as ons Hardloop hierdie kode, dan sal die uitvoer so wees. Dus, ons sal " ReDim Preserve " die laaste dimensie van 'n 2D-skikking in Excel VBA.. Nou, die volgende metode sal jou wys hoe om " ReDim Bewaar ” en verander die grootte van beide dimensies van die skikking.

Lees meer: ​​ VBA om uniek te word Waardes van kolom na skikking in Excel (3 kriteria)

Soortgelyke lesings

  • Hoe om 'n tabelskikking in Excel te noem (met Maklike stappe)
  • Excel VBA om CSV-lêer in 'n skikking te lees (4 ideale voorbeelde)
  • Hoe om reeks na skikking in Excel om te skakelVBA (3 maniere)
  • Excel VBA: Verwyder duplikate uit 'n skikking (2 voorbeelde)

2. ReDim Bewaar beide dimensies 2D-skikking in Excel VBA

In hierdie laaste metode sal ons jou die stappe wys om die grootte te verander en " ReDim Preserve " die 2D-skikking . Hier sal ons die VBA Transpose -funksie gebruik om die onderste grens van die skikking te verander. As ons probeer het om die grootte van die onderste grens van die skikking in die eerste metode te verander, sal ons die " Subscript buite reeks "-fout sien. Nou, sonder meer, laat ons kyk hoe ons dit kan regstel en ons doelwit kan bereik.

Stappe:

  • Bring eerstens, soos in die eerste metode gewys, die Module -venster op.
  • Tweedens, voeg die volgende reëls kode by die eerste kode.
7024
  • Boonop lyk die kode vir die finale metode so.
4338

VBA-kode-ontleding

  • Eerstens noem ons die Subprosedure " ReDim_Preserve_2D_Array_Both_Dimensions " .
  • Dan is die res van die kodes tot by die VBA Transpose -funksie dieselfde as in die eerste kode.
  • Hier is ons is besig om die skikking te transponeer.
  • Dan verhoog ons die boonste grens van die skikking.
  • Daarna transponeer ons die skikking weer. Daarom sal dit uiteindelik die onderste grens verander.
  • Volgende voer ons die waardes in vir die skikking wat verander het.die behoud van die ou data.
  • Laastens skryf ons die waardes na die selreeks C6:E9 .
  • Nadat dat, soos getoon in die eerste metode , Hierdie kode hardloop .
  • Ons kan dus visualiseer hoe die kode 'n bewaar. 2D-skikking wat die " ReDim Preserve " en die VBA Transpose -funksie gebruik.

Lees meer: ​​ VBA om skikking in Excel te transponeer (3 metodes)

Dinge om te onthou

  • ReDim Preserve kan nie die onderste grens van die skikking verander nie. Om dit te doen, moet ons die Transpose -funksie gebruik.
  • Ons kan net ReDim op dinamiese skikkings gebruik.

Gevolgtrekking

Ons het vir jou twee vinnige maniere gewys om ' ReDim Preserve ' 'n 2D skikking in Excel VBA te gebruik. As jy enige probleme rakende hierdie metodes ondervind of enige terugvoer vir my het, kan jy gerus hieronder kommentaar lewer. Boonop kan u ons webwerf ExcelWIKI besoek vir meer Excel-verwante artikels. Dankie dat jy gelees het, hou aan om uit te blink!

Hugh West is 'n hoogs ervare Excel-afrigter en ontleder met meer as 10 jaar ondervinding in die bedryf. Hy het 'n Baccalaureusgraad in Rekeningkunde en Finansies en 'n Meestersgraad in Besigheidsadministrasie. Hugh het 'n passie vir onderrig en het 'n unieke onderrigbenadering ontwikkel wat maklik is om te volg en te verstaan. Sy kundige kennis van Excel het duisende studente en professionele persone wêreldwyd gehelp om hul vaardighede te verbeter en uit te blink in hul loopbane. Deur sy blog deel Hugh sy kennis met die wêreld, en bied gratis Excel-tutoriale en aanlyn opleiding aan om individue en besighede te help om hul volle potensiaal te bereik.