Ako zachovať 2D pole ReDim v programe Excel VBA (2 jednoduché spôsoby)

  • Zdieľajte To
Hugh West

Pole je premenná, ktorá uchováva rovnaké druhy údajov. Ak je v ňom len jeden riadok alebo jeden stĺpec údajov, potom sa nazýva jednorozmerné pole. Ak je však v ňom viac ako jeden riadok a stĺpec, nazýva sa dvojrozmerné pole. Používame ReDim na zmenu veľkosti poľa vo VBA. Okrem toho používame Zachovať kľúčové slovo s ReDim zachovať staré údaje neporušené. Tento článok vám ukáže 2 rýchle spôsoby, ako " ReDim Preserve " a 2D pole na stránke Excel VBA .

Stiahnite si cvičebnicu

Makro na ReDim Preserve 2D.xlsm

2 praktické prístupy k zachovaniu 2D poľa ReDim v programe Excel VBA

Toto je základný súbor údajov vytvorený z 2D pole s tromi riadkami a dvoma stĺpcami. Najprv vytvoríme toto pole. Potom do tohto poľa pridáme ďalší stĺpec. Použijeme " ReDim Preserve " na to, aby sme to urobili. Okrem toho si ukážeme, čo sa stane, ak to nepoužijeme.

V predvolenom nastavení môžeme meniť veľkosť len posledného rozmeru poľa (t. j. stĺpcov alebo hornej hranice). Transponujeme pole, potom zmeníme posledný rozmer a potom opäť transponujeme, aby sme zmenili veľkosť oboch rozmerov poľa 2D pole v programe Excel VBA.

1. ReDim Zachovať posledný rozmer 2D poľa

Najprv definujeme 2D pole ako dynamický. Potom pomocou ReDim vytvoríme pole s tromi riadkami a dvoma stĺpcami. Nakoniec použijeme príkaz ReDim príkaz opäť s Zachovať kľúčové slovo na zvýšenie hornej hranice dvojrozmerného poľa.

Kroky:

  • Na začiatok stlačte ALT+F11 na vyvolanie Modul VBA Prípadne to môžete urobiť z okna Vývojár karta → vyberte Visual Basic .
  • Potom z Vložte karta → vyberte Modul . Tu zadáme kód VBA.

  • Potom zadajte nasledujúci kód do Modul okno.
 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 

Rozdelenie kódu VBA

  • Po prvé, voláme Dílčí postup " Redim_Preserve_2D_Array_Row ".
  • Potom deklarujeme premennú Our_Array ako dynamické pole.
  • Ďalej definujeme veľkosť poľa. Dolná hranica je 3 , horná hranica je 2 a obidve začínajú od 1 .
  • Potom do poľa priradíme hodnoty.
  • Potom zadáme hodnoty do C6:D8 rozsah buniek.
  • Potom vykonáme kód.
  • Takže, Uložiť . Modul a stlačte Spustiť .

  • Výsledkom bude vrátenie hodnôt do definovaných rozsahov buniek. Vidíme, že " Rachel " je v riadku 1 a stĺpec 1 pozícia, ktorá bola definovaná ako ( 1,1 ) v kóde VBA.

  • Teraz zmeníme veľkosť poľa.
  • Pridajte teda tento kód k predchádzajúcemu a odstráňte prvý Príkaz Range.Value . navyše, ako kód vyzerá, môžete vidieť na snímke nižšie.
 ReDim 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 

  • Tu sme zvýšili hornú hranicu z ( 1 Na 2 ) na ( 1 Na 3 ) o 1 .
  • Potom sme pridali hodnoty do poľa.
  • Ak teraz vykonáme tento kód, uvidíme, že predchádzajúce hodnoty sa nezachovajú. Vráti prázdne predchádzajúce hodnoty.

  • Teraz to môžeme napraviť pridaním príkazu Kľúčové slovo Preserve do Výpis ReDim .
  • Nakoniec bude náš úplný kód takýto.
 Option Explicit 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 

  • Ak teraz Spustiť tento kód, potom bude výstup vyzerať takto. Teda budeme " ReDim Preserve " posledný rozmer 2D pole v programe Excel VBA.. Teraz vám ďalšia metóda ukáže, ako " ReDim Preserve " a zmeniť veľkosť oboch rozmerov poľa.

Prečítajte si viac: VBA na získanie jedinečných hodnôt zo stĺpca do poľa v programe Excel (3 kritériá)

Podobné čítania

  • Ako pomenovať pole tabuliek v programe Excel (s jednoduchými krokmi)
  • Excel VBA na čítanie súboru CSV do poľa (4 ideálne príklady)
  • Ako previesť rozsah na pole v programe Excel VBA (3 spôsoby)
  • Excel VBA: Odstránenie duplikátov z poľa (2 príklady)

2. ReDim Zachovať oba rozmery 2D poľa v programe Excel VBA

V tejto poslednej metóde vám ukážeme kroky na zmenu veľkosti a " ReDim Preserve " 2D pole . Tu budeme používať Transpozícia VBA Ak by sme sa pokúsili zmeniť veľkosť dolnej hranice poľa v prvej metóde, potom sa zobrazí " Odpis mimo rozsahu " Chyba. Teraz sa bez ďalších rečí pozrime, ako to môžeme napraviť a dosiahnuť náš cieľ.

Kroky:

  • Po prvé, ako je uvedené v prvej metóde , vyvolajte Modul okno.
  • Po druhé, do prvého kódu pridajte nasledujúce riadky kódu.
 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 
  • Okrem toho kód pre záverečnú metódu vyzerá takto.
 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"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 

Rozdelenie kódu VBA

  • Po prvé, voláme Dílčí postup " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Potom zvyšok kódov až po Transpozícia VBA sú rovnaké ako v prvom kóde.
  • Tu transponujeme pole.
  • Potom zvyšujeme hornú hranicu poľa.
  • Potom pole opäť transponujeme. Preto sa v konečnom dôsledku zmení dolná hranica.
  • Potom zadáme hodnoty pre zmenenú veľkosť poľa, pričom zachováme staré údaje.
  • Nakoniec zapíšeme hodnoty do rozsahu buniek C6:E9 .
  • Potom, ako je uvedené v prvej metóde , Spustiť tento kód.
  • Takto si môžeme predstaviť, ako kód zachováva 2D pole pomocou " ReDim Preserve " a Transpozícia VBA funkcie.

Prečítajte si viac: VBA na transpozíciu poľa v programe Excel (3 metódy)

Čo si treba zapamätať

  • ReDim Preserve nemôžeme zmeniť dolnú hranicu poľa. Ak to chceme urobiť, musíme použiť Transponovať funkcie.
  • Môžeme použiť iba ReDim na dynamických poliach.

Záver

Ukázali sme vám dva rýchle spôsoby, ako " ReDim Preserve " a 2D pole v programe Excel VBA. Ak sa stretnete s akýmikoľvek problémami týkajúcimi sa týchto metód alebo máte pre mňa akúkoľvek spätnú väzbu, neváhajte a komentujte ich nižšie. Okrem toho môžete navštíviť našu stránku ExcelWIKI pre ďalšie články týkajúce sa Excelu. Ďakujeme za čítanie, pokračujte v excelovaní!

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.