Obsah
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í!