/ / Dynamické pole v programe Excel VBA

Dynamické pole v programe Excel VBA

Ak sa veľkosť poľa zvýši a nechcete opraviť veľkosť poľa, môžete použiť Kľúčové slovo ReDim. Excel VBA potom automaticky zmení veľkosť poľa.

Pridajte niektoré čísla do stĺpca A.

Dynamické pole v programe Excel VBA

Do pracovného hárka umiestnite príkazové tlačidlo a pridajte nasledujúce riadky kódu:

1. Najprv deklarujeme pole s názvom čísla. Tiež deklarovať dve premenné typu Integer. Jedna pomenovaná veľkosť a jedna s názvom i.

Dim numbers() As Integer, size As Integer, i As Integer

Poznámka: pole zatiaľ nemá žiadnu veľkosť. čísla, veľkosť a i sú tu náhodne vybrané, môžete použiť akékoľvek mená. Nezabudnite sa na tieto mená odvolať vo zvyšku kódu.

2. Ďalej určujeme veľkosť poľa a uložíme ho do premennej veľkosti. Pre tento účel môžete použiť funkciu tabuľky CountA. Pridajte nasledujúci riadok kódu:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. Teraz poznáme veľkosť poľa a môžeme ho redimenzovať. Pridajte nasledujúci riadok kódu:

ReDim numbers(size)

4. Ďalej inicializujeme každý prvok poľa. Používame slučku.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. Zobrazujeme posledný prvok poľa pomocou MsgBox.

MsgBox numbers(size)

6. Ukončite Editor jazyka a kliknite na príkazové tlačidlo na hárku.

výsledok:

Posledný prvok poľa

7. Teraz jasne zistite, prečo sa toto nazýva dynamické pole, pridajte číslo do stĺpca A.

Pridať číslo

8. Znova kliknite na príkazové tlačidlo.

Výsledok dynamického poľa

Záver: program Excel VBA automaticky zmenil veľkosť tohto dynamického poľa.

9. Keď použijete kľúčové slovo ReDim, vymažete všetky existujúce údaje aktuálne uložené v poli. Napríklad pridajte nasledujúce riadky kódu k predtým vytvorenému kódu:

ReDim numbers(3)
MsgBox numbers(1)

výsledok:

Bez zachovania

Pole je prázdne.

10. Ak chcete zachovať údaje v existujúcom poli po jeho redimenzácii, použite kľúčové slovo Preserve.

ReDim Preserve numbers(3)
MsgBox numbers(1)

výsledok:

S Preserve

Tiež si prečítajte: