VBA ReDim - Zacházejte s dynamickými poli pomocí VBA ReDim Preserve

Prohlášení Excel VBA ReDim

Příkaz VBA Redim je podobný příkazu dim, ale rozdíl je v tom, že se používá k ukládání nebo přidělení více úložného prostoru nebo ke zmenšení úložného prostoru, který má proměnná nebo pole, nyní existují dva důležité aspekty používané s příkazem Zachovat, pokud se s tímto příkazem použije zachování, vytvoří se nové pole s jinou velikostí a pokud se s tímto příkazem nepoužívá zachování, pak se pouze změní velikost pole aktuální proměnné.

Pole jsou důležitou součástí kódování VBA. Pomocí polí můžeme uložit více než jednu hodnotu do stejné proměnné, kterou jsme definovali. Stejně jako deklarujeme proměnnou pomocí slova „Dim“, musíme také deklarovat název pole pomocí „Dim“.

Abychom mohli deklarovat název pole, musíme nejprve určit druh pole, které budeme definovat. V polích máme 5 typů.

  1. Statické pole
  2. Dynamické pole
  3. Jedno dimenzionální pole
  4. Dvourozměrné pole
  5. Vícedimenzionální pole

Ve statickém poli v aplikaci Excel rozhodneme o dolní hodnotě a horní hodnotě pole v dostatečném předstihu, zatímco deklarujeme proměnnou. Podívejte se například na níže uvedený příklad.

Kód:

Sub ReDim_Example1 () Dim MyArray (1 až 5) jako řetězec End Sub

Zde MyArray je název pole, které může obsahovat hodnotu od 1 do 5. MyArray může obsahovat 5 různých výsledků, jako je níže uvedený.

Kód:

Sub ReDim_Example1 () Dim MyArray (1 až 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Nice Day" End Sub

Dynamické pole s příkazem ReDim

Ale v Dynamic array to tak není. O dolní a horní hodnotě nebudeme rozhodovat s dostatečným předstihem; spíše jen definujeme název pole a přiřadíme datový typ.

Sub ReDim_Example1 () Dim MyArray () jako řetězec End Sub

Aby byl název pole dynamický, musíme jej nejprve deklarovat slovem „Dim“, ale velikost pole nerozhodovat s dostatečným předstihem. Prostě pojmenujeme pole s prázdnými hodnotami uvnitř závorky (). Pokud pole nezahrnuje velikost, je považováno za dynamické pole.

Dim MyArray () jako řetězec

V okamžiku, kdy zmíníte velikost pole uvnitř závorky, stane se statickým polem. Dim MyArray (1 až 5) jako řetězec

V dynamickém poli vždy změníme velikost pole pomocí slova „ReDim“ v dalším řádku kódu.

ReDim MyArray (1 až 6) jako řetězec

Jakákoli hodnota uložená k názvu pole v předchozích krocích, tj. Pomocí příkazu „Dim“, má hodnotu null a velikost, kterou jsme deklarovali pomocí „ReDim“, se stane novou velikostí pole.

Příklady použití prohlášení VBA Redim

Příklad č. 1

Podívejte se na příklad praktického použití příkazu „ReDim“. Chcete-li použít aplikaci „ReDim“, postupujte podle následujících kroků.

Krok 1: Nejprve vytvořte název makra.

Krok 2: Deklarujte název pole jako řetězec.

Kód:

Sub ReDim_Example1 () Dim MyArray () jako řetězec End Sub

Krok 3: Nyní použijte slovo „Redim“ a přiřaďte velikost pole.

Kód:

Sub ReDim_Example1 () Dim MyArray () jako řetězec ReDim MyArray (1 až 3) End Sub

Krok 4: Název pole „MyArray“ tedy nyní může obsahovat až 3 hodnoty. Přiřaďte hodnotu těmto 3 polím jako níže.

Kód:

Sub ReDim_Example1 () Dim MyArray () jako řetězec ReDim MyArray (1 až 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub

Takže první pole se rovná slovu „Vítejte“, druhé pole se rovná slovu „to“ a třetí pole se rovná slovu „VBA“.

Krok 5: Nyní tyto hodnoty pole uložte do buněk.

Kód:

Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 To 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub

Krok 6: Pokud spustíte tento kód, měli bychom mít tyto hodnoty v buňkách A1, B1 a C1.

Příklad č. 2 - Změna velikosti pole při zapamatování starých hodnot.

Jakmile jsou názvu pole přiřazeny hodnoty, můžeme také kdykoli v proceduře změnit velikost pomocí slova „ReDim Preserve“.

Předpokládejme, že jste již deklarovali název pole a přiřadili hodnoty k názvu pole, jako je níže uvedený.

Nyní byste chtěli zvětšit délku pole o 2, tj. 5. V takovém případě můžeme použít slovo VBA „ReDim Preserve“ ke změně délky pole, abychom si pamatovali také staré hodnoty.

Kód:

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) = "Znak 1" Rozsah ("A1"). Hodnota = MyArray (1) Rozsah ("B1"). Hodnota = MyArray (2) Rozsah ("C1"). Hodnota = MyArray (3) Rozsah ("D1"). Hodnota = MyArray (4) End Sub

Nyní můžeme matici přiřadit další dvě hodnoty.

Kód:

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) = "Znak 1" Rozsah ("A1"). Hodnota = MyArray (1) Rozsah ("B1"). Hodnota = MyArray (2) Rozsah ("C1"). Hodnota = MyArray (3) Rozsah ("D1"). Hodnota = MyArray (4) End Sub

Nyní tyto hodnoty uložte do buněk.

Kód:

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) = "Znak 1" Rozsah ("A1"). Hodnota = MyArray (1) Rozsah ("B1"). Hodnota = MyArray (2) Rozsah ("C1"). Hodnota = MyArray (3) Rozsah ("D1"). Hodnota = MyArray (4) End Sub

Nyní spusťte makro a uvidíte, co se stane.

Takže jsme dostali nové slovo do buňky D1.

Důvod, proč musíme použít slovo „zachovat“, protože pole by si mělo pamatovat staré hodnoty pole v proceduře.

V okamžiku, kdy ignorujete slovo „zachovat“, nebude si pamatovat staré hodnoty.

Na co si pamatovat zde

  • ReDim může obsahovat pouze poslední hodnotu pole, ne mnoho hodnot. Například nemůžeme použít tento kód „ReDim Preserve MyArray (4 až 5)“. To způsobí chybu.
  • Nemůžeme ReDim statická pole. V okamžiku, kdy přiřadíte velikost pole uvnitř závorky, stane se statickým polem.
  • Pomocí ReDim nemůžeme změnit datový typ. Pole může obsahovat jakýkoli datový typ, který jsme přiřadili při deklaraci pole.

Zajímavé články...