VBA ReDim - Spracovajte dynamické polia pomocou nástroja VBA ReDim Preserve

Vyhlásenie Excel VBA ReDim

Príkaz VBA Redim je podobný príkazu dim, ale rozdiel je v tom, že sa používa na ukladanie alebo prideľovanie väčšieho úložného priestoru alebo na zmenšenie úložného priestoru, ktorý má premenná alebo pole so sebou. Teraz sú s príkazom Zachované dva dôležité aspekty, ak sa s týmto príkazom použije preserve, vytvorí nové pole s inou veľkosťou a ak sa s týmto príkazom preserve nepoužije, zmení iba veľkosť poľa aktuálnej premennej.

Polia sú dôležitou súčasťou kódovania VBA. Pomocou polí môžeme uložiť viac ako jednu hodnotu do tej istej premennej, ktorú sme definovali. Rovnako ako deklarujeme premennú pomocou slova „Dim“, musíme aj názov poľa deklarovať pomocou „Dim“.

Aby sme mohli deklarovať názov poľa, musíme najskôr identifikovať druh poľa, ktorý ideme definovať. V poliach máme 5 druhov.

  1. Statické pole
  2. Dynamické pole
  3. Jedno dimenzionálne pole
  4. Dvojrozmerné pole
  5. Viacrozmerné pole

V statickom poli v programe Excel rozhodneme o dolnej hodnote a hornej hodnote poľa v dostatočnom predstihu, zatiaľ čo deklarujeme premennú. Napríklad si pozrite nasledujúci príklad.

Kód:

Sub ReDim_Example1 () Dim MyArray (1 až 5) ako reťazec End Sub

Tu MyArray je názov poľa, ktoré môže obsahovať hodnotu od 1 do 5. MyArray môže obsahovať 5 rôznych výsledkov, ako je uvedený nižšie.

Kód:

Sub ReDim_Example1 () Dim MyArray (1 až 5) ako reťazec MyArray (1) = "Ahoj" MyArray (2) = "dobrý" MyArray (3) = "ráno" MyArray (4) = "mať" MyArray (5) = "Nice Day" End Sub

Dynamické pole s vyhlásením ReDim

Ale v dynamickom poli to tak nie je. O spodnej a hornej hodnote nebudeme rozhodovať v dostatočnom časovom predstihu; skôr iba definujeme názov poľa a priradíme dátový typ.

Sub ReDim_Example1 () Dim MyArray () ako reťazec End Sub

Aby bol názov poľa dynamický, musíme ho najskôr deklarovať slovom „Dim“, ale veľkosť poľa neurčovať dostatočne vopred. Iba pomenujeme pole s prázdnymi hodnotami vo vnútri zátvorky (). Ak pole nezahŕňa veľkosť, považuje sa to za dynamické pole.

Dim MyArray () ako reťazec

V okamihu, keď spomeniete veľkosť poľa v zátvorke, stane sa z neho statické pole. Dim MyArray (1 až 5) ako reťazec

V dynamickom poli vždy zmeníme veľkosť poľa pomocou slova „ReDim“ v ďalšom riadku kódu.

ReDim MyArray (1 až 6) ako reťazec

Akákoľvek hodnota uložená k názvu poľa v predchádzajúcich krokoch, tj pomocou príkazu „Dim“, bude mať hodnotu null a veľkosť, ktorú sme deklarovali pomocou príkazu „ReDim“, sa stane novou veľkosťou poľa.

Príklady použitia vyhlásenia VBA Redim

Príklad č

Zoznámte sa s príkladom praktického použitia vyhlásenia „ReDim“. Aplikáciu „ReDim“ vykonáte podľa nasledujúcich pokynov.

Krok 1: Najskôr vytvorte názov makra.

Krok 2: Deklarujte názov poľa ako reťazec.

Kód:

Sub ReDim_Example1 () Dim MyArray () ako reťazec End Sub

Krok 3: Teraz použite slovo „Redim“ a priraďte veľkosť poľa.

Kód:

Sub ReDim_Example1 () Dim MyArray () ako reťazec ReDim MyArray (1 až 3) End Sub

Krok 4: Názov poľa „MyArray“ teda teraz môže obsahovať až 3 hodnoty. Priraďte hodnotu týmto 3 poliam ako nižšie.

Kód:

Sub ReDim_Example1 () Dim MyArray () ako reťazec ReDim MyArray (1 až 3) MyArray (1) = "Vitajte" MyArray (2) = "na" MyArray (3) = "VBA" End Sub

Prvé pole sa teda rovná slovu „Vitajte“, druhé pole sa rovná slovu „do“ a tretie pole sa rovná slovu „VBA“.

Krok 5: Teraz tieto hodnoty poľa uložte do buniek.

Kód:

Sub ReDim_Example1 () Dim MyArray () ako reťazec ReDim MyArray (1 až 3) MyArray (1) = "Vitajte" MyArray (2) = "na" MyArray (3) = "Rozsah VBA" ("A1"). Hodnota = Rozsah MyArray (1) ("B1"). Hodnota = Rozsah MyArray (2) ("C1"). Hodnota = MyArray (3) Koniec Sub

Krok 6: Ak spustíte tento kód, mali by sme mať tieto hodnoty v bunkách A1, B1 a C1.

Príklad č. 2 - Zmena veľkosti poľa pri zapamätaní starých hodnôt.

Keď sú názvu poľa priradené hodnoty, môžeme tiež kedykoľvek zmeniť veľkosť procedúry pomocou slova „ReDim Preserve“.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

Dôvod, prečo musíme použiť slovo „zachovať“, pretože pole by si malo pamätať staré hodnoty poľa v procedúre.

V okamihu, keď ignorujete slovo „zachovať“, nebude si pamätať staré hodnoty.

Tu si treba pamätať

  • ReDim môže obsahovať iba poslednú hodnotu poľa, nie veľa hodnôt. Nemôžeme napríklad použiť tento kód „ReDim Preserve MyArray (4 až 5)“. To spôsobí chybu.
  • Nemôžeme ReDim statické polia. V okamihu, keď v zátvorke priradíte veľkosť poľa, stane sa z neho statické pole.
  • Pomocou ReDim nemôžeme zmeniť dátový typ. Pole môže obsahovať akýkoľvek dátový typ, ktorý sme priradili, zatiaľ čo pole deklarujeme.

Zaujímavé články...