Pole VBA v Excelu: Typy a jak je používat s příkladem

⚡ Chytré shrnutí

Pole VBA v Excelu ukládají skupinu souvisejících hodnot stejného datového typu pod jedním názvem, ke kterým se přistupuje pomocí indexu. Tato stránka vysvětluje statická a dynamická pole, jedno-, dvou- a vícerozměrná pole, syntaxi deklarací a zpracovaný příklad načítání nápojů.

  • ???? Koncept pole: Jedno pojmenované paměťové místo, které obsahuje mnoho hodnot stejného datového typu, oddělených indexem.
  • 🎯 Výhody: Pole seskupují související data, snižují počet proměnných a urychlují načítání a třídění dat.
  • 📌 Statické pole: Deklarováno s pevnou velikostí, například Dim ArrayMonth(12) As String, pokud je znám počet prvků.
  • 🔄 Dynamické pole: Deklarováno jako prázdné pomocí Dim ArrayMonth() a jeho velikost je později upravena pomocí ReDim, pokud počet prvků není znám.
  • 📐 Rozměry: Pole používá jeden, dva nebo více indexů k modelování jednotlivých seznamů, tabulek nebo víceúrovňových dat.
  • 🧪 Zpracovaný příklad: Příkazové tlačítko načte čtyři názvy nápojů z pole do buněk listu pomocí Sheet1.Cells.

Pole Excel VBA

Co je VBA Array?

Pole je definováno jako paměťové místo schopné uložit více než jednu hodnotu. Všechny hodnoty musí být stejného datového typu. Řekněme, že chcete uložit seznam svých oblíbených nápojů do jediné proměnné, můžete k tomu použít pole VBA.

Pomocí pole můžete odkazovat na související hodnoty pod stejným názvem. K jejich rozlišení můžete použít index nebo dolní index. Jednotlivé hodnoty jsou označovány jako prvky pole Excel VBA. Jsou souvislé od indexu 0 až po nejvyšší hodnotu indexu.

Tento tutoriál předpokládá, že používáte Microsoft vynikat verze 2013. Poznatky stále platí pro další verze Microsoft Excel také.

Jaké jsou výhody polí?

Než začnete psát kód pro pole, je dobré pochopit, proč se vyplatí pole používat. Následuje několik výhod, které funkce pole VBA nabízí.

  1. Seskupte logicky související data dohromady – řekněme, že chcete uložit seznam studentů. Můžete použít jednu proměnnou pole, která má oddělená umístění pro kategorie studentů, tj. mateřská škola, základní, střední, střední škola atd.
  2. Pole usnadňují psaní udržovatelného kódu. Pro stejná logicky související data umožňuje definovat jednu proměnnou namísto definování více než jedné proměnné.
  3. Lepší výkon – jakmile je pole definováno, je rychlejší načítat, třídit a upravovat data.

Typy polí ve VBA

VBA podporuje dva typy polí, jmenovitě;

  • statický – Tyto typy polí mají pevně stanovený počet prvků, které lze uložit. Nelze změnit velikost datového typu statického pole. Jsou užitečné, když chcete pracovat se známými entitami, jako je počet dní v týdnu, pohlaví atd.Pro příklad: Dim ArrayMonth(12) As String
  • Dynamický – Tyto typy polí nemají pevně daný předem určený počet prvků, které lze uložit. Ty jsou užitečné při práci s entitami, jejichž počet nelze předem určit.Pro příklad: Dim ArrayMonth() jako varianta

Jakmile zjistíte, který typ odpovídá vašim datům, dalším krokem je syntaxe deklarace pro každý z nich.

Syntaxe pro deklaraci polí

Statická pole

Syntaxe pro deklaraci Statické pole je následující:

Dim arrayName (n) as datatype

TADY,

Code Akce
Dim arrayName (n) datový typ
  1. Deklaruje proměnnou pole s názvem arrayName s velikostí n a datovým typem. Velikost označuje počet prvků, které pole může uložit.

Dynamická pole

Syntaxe pro deklaraci DYNAMICKÝ pole je následující:

Dim arrayName() as datatype
ReDim arrayName(4)

TADY,

Code Akce
Dim arrayName () datový typ
  1. Deklaruje proměnnou pole nazvanou název_pole bez uvedení počtu prvků
ReDim arrayName(4)
  1. Určuje velikost pole poté, co bylo pole definováno.

Rozměry pole

Pole může být jednorozměrné, dvourozměrné nebo vícerozměrné.

  • Jeden rozměr: V této dimenzi pole používá pouze jeden index. Například určitý počet lidí každého věku.
  • Dva rozměry: V této dimenzi pole používá dva indexy. Například určitý počet studentů v každé třídě. Vyžaduje počet tříd a počet studentů v každé třídě
  • Vícerozměrné: V této dimenzi pole používá více než dva indexy. Například teploty během dne. (30, 40, 20).

Jak používat Array v Excel VBA

Po probrané teorii můžeme pole využít v reálném sešitu. Vytvoříme jednoduchou aplikaci. Tato aplikace naplní excelový list daty z proměnné pole. V tomto příkladu pole VBA budeme dělat následující.

  • Vytvoř nový Microsoft Excelový sešit a uložte jej jako Excelový sešit s podporou maker (*.xlsm)
  • Přidejte do sešitu příkazové tlačítko
  • Nastavte název a vlastnosti titulku příkazového tlačítka
  • Programování VBA, které naplní list aplikace Excel

Proveďte toto cvičení krok za krokem,

Krok 1 – Vytvořte nový sešit

  1. Otevřená Microsoft vynikat
  2. Uložte nový sešit jako VBA Arrays.xlsm

Krok 2 – Přidejte příkazové tlačítko

Poznámka: Tato část předpokládá, že jste obeznámeni s procesem vytváření rozhraní v aplikaci Excel. Pokud nejste obeznámeni, přečtěte si tutoriál VBA Excel Form Control & ActiveX Control. Ukáže vám, jak vytvořit rozhraní

  1. Přidejte na list příkazové tlačítko

Použijte Array v Excel VBA

  1. Nastavte vlastnost name na cmdLoadBeverages
  2. Nastavte vlastnost titulek na Načíst nápoje

Vaše GUI by nyní mělo vypadat následovně

Použijte Array v Excel VBA

Krok 3 – Uložte soubor

  1. Klikněte na tlačítko uložit jako
  2. Vyberte sešit Excel s podporou maker (*.xlsm), jak je znázorněno na obrázku níže

Použijte Array v Excel VBA

Krok 4 – Napište kód

Nyní napíšeme kód pro naši aplikaci

  1. Klikněte pravým tlačítkem na tlačítko Načíst nápoje a vyberte zobrazit kód
  2. Přidejte následující kód do události kliknutí cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

TADY,

Code Akce
Tlumené nápoje (1 až 4) jako řetězec
  • Deklaruje proměnnou pole s názvem Drinks. První index pole je 1 a poslední index pole je 4.
Nápoje (1) = „Pepsi“
  • Přiřadí hodnotu Pepsi prvnímu prvku pole. Další podobný kód dělá totéž pro ostatní prvky v poli.
Sheet1.Cells(1, 1).Value = „Moje oblíbené nápoje“
  • Zapíše hodnotu Moje oblíbené nápoje do adresy buňky A1. List1 odkazuje na list a Cells(1,1) odkazuje na řádek číslo 1 a sloupec 1 (B)
List1.Cells(2, 1).Value = Nápoje(1)
  • Zapíše hodnotu prvku pole s indexem 1 na řádek číslo dva sloupce 1

Testování naší aplikace

Po nainstalování kódu je posledním krokem spuštění tlačítka a ověření, zda pole vyplňuje list. Vyberte kartu Vývojář a ujistěte se, že tlačítko Režim návrhu je „vypnuto“. Indikátor znamená, že bude mít bílé pozadí a nikoli barevné (nazelenalé). (Viz obrázek níže)

Testování aplikace v Excelu VBA

Klikněte na tlačítko Načíst nápoje

Získáte následující výsledky

Testování aplikace v Excelu VBA

Stáhněte si Excel obsahující výše uvedený kód

Stáhněte si výše uvedený Excel Code

Nejčastější dotazy

Statické pole má pevně stanovenou velikost při deklaraci, například Dim Arr(12). Dynamické pole je deklarováno jako prázdné pomocí Dim Arr() a jeho velikost se později mění pomocí ReDim, pokud počet prvků není předem znám.

Funkce ReDim nastavuje nebo mění velikost dynamického pole po jeho deklaraci. Přidání klíčového slova Preserve, jako v ReDim Preserve Arr(10), zachová existující hodnoty při změně velikosti; bez klíčového slova Preserve se všechny uložené hodnoty vymažou.

Použijte funkce LBound a UBound. LBound vrací nejnižší index a UBound vrací nejvyšší index. Počet prvků se rovná UBound(Arr) mínus LBound(Arr) plus jedna, což funguje jak pro statická, tak pro dynamická pole.

Ano. Asistenti s umělou inteligencí, jako je Copilot, generují deklarace polí a smyčky z prostého požadavku, například načtou deset názvů produktů do sloupce. Vývojář vloží kód do editoru a otestuje ho na kopii sešitu.

Ano. Asistenti umělé inteligence přečtou chybu „Subscript out of range“ a kód, poté ukážou na index, který překračuje hranice pole, a navrhnou opravu, například úpravu velikosti ReDim nebo čítače smyček. Vývojář ji použije a znovu otestuje.

Shrňte tento příspěvek takto: