Jak zachovat 2D pole ReDim v aplikaci Excel VBA (2 snadné způsoby)

  • Sdílet Toto
Hugh West

Pole je proměnná, která uchovává stejné druhy dat. Pokud je v něm pouze jeden řádek nebo jeden sloupec dat, pak se nazývá jednorozměrné pole. Pokud je však řádků a sloupců více, nazývá se 2D pole. Používáme tzv. ReDim ke změně velikosti pole ve VBA. Kromě toho používáme příkaz Zachovat s klíčovým slovem ReDim zachovat stará data nedotčená. Tento článek vám ukáže. 2 rychlé způsoby, jak " ReDim Preserve " a 2D pole na adrese Excel VBA .

Stáhnout cvičebnici

Makro pro ReDim Preserve 2D.xlsm

2 šikovné přístupy k zachování 2D pole ReDim v aplikaci Excel VBA

Jedná se o základní datovou sadu vytvořenou z 2D pole se třemi řádky a dvěma sloupci. Nejprve vytvoříme toto pole. Poté do tohoto pole přidáme další sloupec. Použijeme " ReDim Preserve " k tomu. Navíc si ukážeme, co se stane, pokud tuto funkci nepoužijeme.

Ve výchozím nastavení můžeme měnit velikost pouze posledního rozměru pole (tj. sloupců nebo horní hranice). Transponujeme pole, pak změníme poslední rozměr a poté opět transponujeme, abychom změnili velikost obou rozměrů pole. 2D pole v aplikaci Excel VBA.

1. ReDim Zachovat poslední rozměr 2D pole

Nejprve definujeme 2D pole jako dynamický. Pak pomocí ReDim vytvoříme pole se třemi řádky a dvěma sloupci. Nakonec použijeme příkaz ReDim příkaz znovu s Zachovat klíčové slovo zvýšit horní hranici dvourozměrného pole.

Kroky:

  • Začněte stisknutím tlačítka ALT+F11 vyvolat Modul VBA Alternativně můžete tuto funkci provést v okně Vývojář karta → vyberte Visual Basic .
  • Pak z Vložte karta → vyberte Modul . Zde zadáme kód VBA.

  • Dále zadejte následující kód do pole 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 

Rozdělení kódu VBA

  • Za prvé, voláme Dílčí postup " Redim_Preserve_2D_Array_Row ".
  • Poté deklarujeme proměnnou Our_Array jako dynamické pole.
  • Dále definujeme velikost pole. Dolní mez je následující 3 , horní hranice je 2 a obě začínají od 1 .
  • Poté do pole přiřadíme hodnoty.
  • Poté zadáme hodnoty do C6:D8 rozsah buněk.
  • Poté kód spustíme.
  • Takže, Uložit na Modul a stiskněte Spustit .

  • Výsledkem bude vrácení hodnot do definovaných rozsahů buněk. Vidíme, že " Rachel " je v řádku 1 a sloupec 1 pozice, která byla definována jako ( 1,1 ) v kódu VBA.

  • Nyní změníme velikost pole.
  • Přidejte tedy tento kód k předchozímu a odstraňte první položku Příkaz Range.Value . navíc, jak kód vypadá, můžete vidět na snímku níže.
 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 

  • Zde jsme zvýšili horní hranici z ( 1 Na 2 ) na ( 1 Na 3 ) 1 .
  • Poté jsme přidali hodnoty do pole.
  • Pokud nyní provedeme tento kód, uvidíme, že předchozí hodnoty se nezachovají. Vrátí se prázdné místo pro předchozí hodnoty.

  • Nyní to můžeme napravit přidáním příkazu Klíčové slovo Preserve do Příkaz ReDim .
  • Nakonec bude náš úplný kód vypadat takto.
 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 

  • Pokud nyní Spustit tento kód, pak bude výstup vypadat takto. Tedy, budeme " ReDim Preserve " poslední rozměr 2D pole v Excelu VBA.. Další metoda vám ukáže, jak " ReDim Preserve " a změňte velikost obou rozměrů pole.

Přečtěte si více: Získání jedinečných hodnot ze sloupce do pole v aplikaci Excel pomocí VBA (3 kritéria)

Podobná čtení

  • Jak pojmenovat pole tabulek v aplikaci Excel (ve snadných krocích)
  • Načtení souboru CSV do pole v programu Excel VBA (4 ideální příklady)
  • Jak převést rozsah na pole v aplikaci Excel VBA (3 způsoby)
  • Excel VBA: Odstranění duplicit z pole (2 příklady)

2. ReDim Zachovat oba rozměry 2D pole v aplikaci Excel VBA

V této závěrečné metodě vám ukážeme postup pro změnu velikosti a " ReDim Preserve " 2D pole . Zde budeme používat VBA Transponovat Pokud bychom se pokusili změnit velikost dolní hranice pole v první metodě, pak se zobrazí " Index mimo rozsah " Chyba. Nyní se bez dalších okolků podíváme, jak to můžeme napravit a dosáhnout našeho cíle.

Kroky:

  • Za prvé, jak je uvedeno v první metodě , vyvolat Modul okno.
  • Za druhé přidejte do prvního kódu následující řádky 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 
  • Kromě toho vypadá kód závěrečné metody 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" 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 End Sub 

Rozdělení kódu VBA

  • Za prvé, voláme Dílčí postup " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Pak se zbytek kódů až po VBA Transponovat jsou stejné jako v prvním kódu.
  • Zde transponujeme pole.
  • Pak zvětšujeme horní hranici pole.
  • Poté pole opět transponujeme. Proto se nakonec změní dolní hranice.
  • Dále zadáme hodnoty pro pole se změněnou velikostí, přičemž zachováme stará data.
  • Nakonec zapíšeme hodnoty do rozsahu buněk C6:E9 .
  • Poté, jak je uvedeno v první metodě , Spustit tento kód.
  • Můžeme si tedy představit, jak kód zachovává a 2D pole pomocí " ReDim Preserve " a VBA Transponovat funkce.

Přečtěte si více: Transpozice pole v aplikaci Excel pomocí jazyka VBA (3 metody)

Na co nezapomenout

  • ReDim Preserve nelze změnit dolní hranici pole. K tomu je třeba použít příkaz Transponovat funkce.
  • Můžeme použít pouze ReDim na dynamických polích.

Závěr

Ukázali jsme vám dva rychlé způsoby, jak " ReDim Preserve " a 2D pole v Excelu VBA. Pokud se setkáte s jakýmikoli problémy týkajícími se těchto metod nebo máte pro mě jakoukoli zpětnou vazbu, neváhejte se vyjádřit níže. Kromě toho můžete navštívit naše stránky ExcelWIKI pro další články týkající se Excelu. Děkujeme za přečtení, pokračujte v excelování!

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.