VBA je součástí sady Microsoft Office řadu let. Přestože nemá úplnou funkčnost a výkon plné aplikace VB, poskytuje VBA uživatelům sady Office flexibilitu pro integraci produktů sady Office a automatizaci práce, kterou v nich děláte.
Jeden z nejúčinnějších nástrojů Ve VBA je k dispozici schopnost načíst celý rozsah dat do jediné proměnné zvané pole. Načtením dat tímto způsobem můžete manipulovat nebo provádět výpočty v tomto rozsahu dat různými způsoby.
Co je to pole VBA? V tomto článku odpovíme na tuto otázku a ukážeme vám, jak používat jednu v svůj vlastní skript VBA.
Co je pole VBA?
Používání VBA pole v Excelu je velmi jednoduché, ale pochopení pojmu pole může být poněkud složité, pokud jste ho nikdy nepoužívali.
Přemýšlejte o poli jako o krabici s částmi uvnitř. Jednorozměrné pole je pole s jednou řadou řezů. Dvourozměrné pole je pole se dvěma řádky sekcí.
Do každé sekce tohoto „pole“ můžete vkládat data v libovolném pořadí.
In_content_1 vše: [300x250] / dfp: [640x360]->Na začátku skriptu VBA musíte definovat toto „pole“ definováním pole VBA. Chcete-li tedy vytvořit pole, které pojme jednu sadu dat (jednorozměrné pole), napíšete následující řádek.
Dim arrMyArray(1 To 6) As String
Později v programu můžete umístit data do libovolné části tohoto pole odkazem na část uvnitř závorek.
arrMyArray(1) = "Ryan Dube"
Dvojrozměrné pole můžete vytvořit pomocí následujícího řádku.
Dim arrMyArray(1 To 6,1 to 2) As Integer
První číslo představuje řádek a druhé je sloupec. Takže výše uvedené pole by mohlo obsahovat rozsah se 6 řádky a 2 sloupci.
Můžete načíst libovolný prvek tohoto pole pomocí následujících dat.
arrMyArray(1,2) = 3
Toto načte 3 do buňky B1.
Pole může pojmout jakýkoli typ dat jako normální proměnnou, jako jsou řetězce, booleovské hodnoty, celá čísla, plováky a další.
The číslo uvnitř závorky může být také proměnná. Programátoři běžně používají smyčku For počítat ve všech částech pole a načítat datové buňky v tabulce do pole. Uvidíte, jak to provést později v tomto článku.
Jak naprogramovat pole VBA v Excelu
Pojďme se podívat na jednoduchý program, kde budete chtít načíst informace z tabulky do vícerozměrného pole.
Jako příklad se podívejme na tabulku prodeje produktu, kde chcete z tabulky vytáhnout jméno, položku a celkový prodej obchodního zástupce.
Všimněte si, že ve VBA, když odkazujete na řádky nebo sloupce, počítáte řádky a sloupce počínaje od levého horního bodu na 1. Takže sloupec rep je 3, sloupec položky je 4 a celkový sloupec je 7.
Chcete-li načíst tyto tři sloupce do všech 11 řádků, musíte napsat následující skript.
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
Všimněte si, že za účelem přeskočení řádku záhlaví musí číslo řádku v prvním Pro vzhled začínat na 2 namísto 1. To znamená, že při načítání řádku musíte odečíst 1 pro hodnotu řádku hodnotu buňky do pole pomocí buněk (i, j) .Hodnota.
Kam vložit skript VBA Array Script
Chcete-li umístit program VBA skript v Excelu, musíte použít Editor VBA. K tomu se dostanete výběrem nabídky Vývojářa výběrem Zobrazit kódv části Ovládací prvky pásu karet.
Pokud v nabídce nevidíte vývojáře, budete muset přidejte to. Chcete-li to provést, vyberte Soubora Možnostia otevřete okno Možnosti aplikace Excel.
Změňte příkazy pro výběr z rozevírací nabídky na Všechny příkazy. Z nabídky vlevo vyberte Vývojářa kliknutím na tlačítko Přidatjej přesuňte do podokna na pravé straně. Zaškrtněte políčko, abyste jej povolili, a dokončete výběr .
Když se otevře okno Editor kódu, ujistěte se, že je v levém podokně vybrán list, ve kterém jsou vaše data. V rozevíracím seznamu vlevo klikněte na Pracovní lista napravo Aktivovat. Tím vytvoříte nový podprogram s názvem Worksheet_Activate ().
Tato funkce se spustí při každém otevření souboru tabulky. Vložte kód do podokna skriptů uvnitř tohoto podprogramu.
Tento skript projde 12 řádky a načte jméno rep ze sloupce 3, položku ze sloupce 4 a celkový prodej ze sloupce 7.
Po dokončení obou smyček bude dvojrozměrné pole arrMyArray obsahuje všechna data zadaná z původního listu.
Manipulace s maticemi v Excelu VBA
Řekněme, že chcete použít 5% daň z obratu na všechny konečné prodejní ceny. a poté zapište všechna data na nový list.
Můžete to provést přidáním další smyčky For for first, s příkazem zapsat výsledky na nový list.
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
Tím se „vyloží“ celé pole do Sheet2, další řádek obsahuje celkem vynásobené 5% pro částku daně.
The výsledný list bude vypadat takto.
Jak vidíte, pole VBA v Excelu jsou velmi užitečná a všestranná jako jakýkoli jiný trik Excel.
Příklad výše je pro pole velmi jednoduché použití. Můžete vytvářet mnohem větší pole a provádět třídění, průměrování nebo mnoho dalších funkcí podle dat, která v nich ukládáte.
Pokud chcete získat skutečnou kreativitu, můžete dokonce vytvořit dvě pole obsahující řadu buněk ze dvou různých listů a provádět výpočty mezi prvky každého pole.
Aplikace jsou omezeny pouze vaší fantazií.