Funkce Excel VBA UBound
Jak často přicházíte se situací, kdy je třeba uvést maximální délku nebo horní mez dat pole, která pracují s Excelem? Většinou, že? A jak to zjistíte? Možná většinu času ručně. Můžete jej však zautomatizovat a získat maximální délku nebo horní hranici pole pomocí funkce VBA nazvané UBound.
Navíc má nejkrásnější způsob, jak to proklouznout. Stejně jako, pokud ve své matici používáte smyčku For, určitě jste chtěli smyčky všechny prvky pole. V takovém případě by bylo únavné najít horní hranici ručně a zmínit ji ve smyčce. Rovněž sníží obecnost kódu. Proto je funkce VBA UBound v takových scénářích užitečná.
UBound je zkratka pro horní mez a udává horní nebo maximální délku pole v Excelu VBA.
Vzorec pro funkci UBound v aplikaci Excel VBA
Funkce Excel VBA UBound má následující syntaxi.
UBound (Arrayname (, Dimension))
Kde,
- Arrayname: Název pole, které jste definovali. Tento argument je povinný / povinný argument.
- Dimension: Volitelný argument, který určuje rozměr pole. Ať už se jedná o jednorozměrné, dvourozměrné nebo vícerozměrné pole. Ve výchozím nastavení bude předpokládat jednorozměrné pole, pokud není uvedeno.
Protože tato funkce obsahuje pouze dva argumenty, je mnohem snazší zapamatovat si syntaxi této funkce.
Jak používat funkci Excel VBA UBound?
Naučíme se používat funkci VBA UBound s několika příklady v Excelu.
Tuto šablonu aplikace VBA UBound Excel si můžete stáhnout zde - VBA UBound Excel TemplatePříklad č. 1 - VBA UBound s jednorozměrným polem
Pro použití funkce UBound ve VBA postupujte podle níže uvedených kroků.
Krok 1: Na kartě Vývojář klikněte na Visual Basic a otevřete Editor VB.
Krok 2: Klikněte na Vložit a vyberte kartu Modul pro přidání nového prázdného modulu do VBE.
Krok 3: Ve VBE začněte psát makro a definujte název proměnné.
Kód:
Sub Onedm_Ubound () Dim IndiaCity (4) jako String End Sub
Zde je proměnná IndiaCity definována s 5 prvky. Typ proměnné je řetězec.
Poznámka: Pole začíná od 0 (nula). Toto pole se tedy bude skládat z 5 prvků.Krok 4: Přiřaďte hodnoty prvkům pole.
Kód:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Bombaj" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "End Sub
Zde má nultý prvek hodnotu přiřazenou jako „Bombaj“, první prvek má hodnotu přiřazenou jako „Bengaluru“ atd.
Krok 5: Pomocí funkce UBound spolu s MsgBoxem získáte horní hranici pole.
Kód:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Bombaj" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "MsgBox" Horní hranice pro pole je: "& UBound (IndiaCity) End Sub
Krok 6: Spusťte tento kód stisknutím klávesy F5 přímo nebo ručně stisknutím tlačítka Run na levém horním panelu. Zobrazí se okno se zprávou „ Horní hranice pro pole je: 4 “.
Uvědomte si, že funkce UBound nezjistila horní hranici prvků pole. Zjistí pouze maximální počet prvků, které pole obsahuje.
Příklad č. 2 - VBA UBound s dvojrozměrným polem
Pro použití funkce UBound ve VBA postupujte podle níže uvedených kroků.
Krok 1: Definujte proměnnou, která pojme dvojrozměrná data.
Kód:
Sub TwoDm_UBound () Dim Array_Test (0 až 6, 1 až 8) jako konec řetězce Sub
Krok 2: Definujte novou proměnnou zprávu a použijte ji v MsgBoxu. Tato proměnná nám pomůže tisknout horní hranice obou rozměrů současně.
Kód:
Sub TwoDm_UBound () Dim Array_Test (0 až 6, 1 až 8) jako řetězec Dim Message MsgBox Message End Sub
Krok 3: Nyní zkuste následující příkazy, které umožňují systému vytisknout obě dimenze pole ve stejném okně zprávy.
Kód:
Sub TwoDm_UBound () Dim Array_Test (0 až 6, 1 až 8) Jako String Dim Message Message = "Horní hranice pro první dimenzi je:" & UBound (Array_Test, 1) & vbCrLf Zpráva = Zpráva & "Horní hranice pro druhou dimenzi je : "& UBound (Array_Test, 2) & vbCrLf MsgBox Message End Sub
Dva příkazy uvedené ve výše uvedeném kódu umožňují systému vytisknout obě dimenze ve stejném okně zprávy. První příkaz ukládá hodnotu horní hranice pro první dimenzi do proměnné Zpráva a končí řádek (vbCrLf). Druhý příkaz přidá první hodnotu přiřazenou k proměnné Zpráva a kombinuje ji s horní mezí druhých dimenzí s vyskakovací zprávou.
Protože se vbCrLf používá v obou příkazech, funguje v obou příkazech jako řádek newline / carriage.
Krok 4: Spusťte kód stisknutím klávesy F5 nebo Run a podívejte se na výstup.
Na podobných liniích můžeme jít do více dimenzí a vidět horní hranici pro každou z nich.
Příklad # 3 - Funkce UBound pro automatickou aktualizaci dat v listu
Předpokládejme, že máte sadu dat, jak je uvedeno na obrázku níže.
Tato data se aktualizují a je třeba je občas kopírovat. Nyní je to opravdu únavná úloha vždy zkontrolovat aktualizace dat a poté je zkopírovat do nového listu. Také to zabírá spoustu času. Můžeme to zkusit automatizovat pomocí funkce UBound ve VBA? Uvidíme.
Chcete-li automaticky aktualizovat data v listu pomocí funkce VBA UBound, postupujte takto:
Krok 1: Definujte proměnnou vytvořením makra.
Kód:
Sub Ex3_UBound () Dim DataUpdate () jako konec varianty Sub
Krok 2: Aktivujte list, který obsahuje vaše data. V tomto případě je název listu „ Data “.
Kód:
Sub Ex3_UBound () Dim DataUpdate () jako listy variant („Data“). Aktivace End Sub
Krok 3: Přiřaďte rozsah proměnné, kterou jsme právě vytvořili. K tomuto účelu použijeme řadu aktivovaných listů.
Kód:
Sub Ex3_UBound () Dim DataUpdate () jako listy variant ("Data"). Aktivujte DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) End Sub
Krok 4: Přidejte nový list do Excelu, kde lze aktualizovaná data zkopírovat a vložit.
Kód:
Sub Ex3_UBound () Dim DataUpdate () jako listy variant ("Data"). Aktivujte DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add End Sub
Krok 5: Nyní použijte níže uvedený řádek kódu, který umožňuje automaticky zkopírovat a vložit data z listu „Data“ do nově vytvořeného listu Excel.
Kód:
Sub Ex3_UBound () Dim DataUpdate () jako listy variant ("Data"). Aktivujte DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add Range (ActiveCell, ActiveCell.Offset (UBound (DataUpdate, 1) - 1, UBound (DataUpdate, 2) - 1)) = DataUpdate End Sub
Výše uvedený kód vyrovná buňky z listu „Data“ nahoru k hornímu okraji, které lze získat použitou funkcí UBound, a přiřadí rozsah proměnné DataUpdate.
Krok 6: Spusťte kód stisknutím klávesy F5 nebo Run a podívejte se na výstup.
Jak vidíte, do sešitu aplikace Excel je přidán nový list, ve kterém se všechna data z listu „Data“ automaticky zkopírují.
Toto je dynamický kód. Myslím tím, že je dynamický, i když přidávám sloupec a řádek, automaticky se zkopíruje na nový list.
Krok 7: K datům přidáme několik řádků a sloupců a uvidíme, jestli to skutečně funguje.
Krok 8: Po aktualizaci datového listu znovu stiskněte tlačítko Run a podívejte se na kouzlo.
Pokud vidíte, přidá se nový list (barevný) a do tohoto listu se přidá nový sloupec Age spolu se dvěma novými řádky. To znamená, že cokoli budeme aktualizovat v hlavním souboru (Data), tento kód z něj automaticky zkopíruje vše a vloží jej do nového listu.
Co si pamatovat
- UBound udává horní / maximální délku pole a ne horní mez z datových bodů přítomných v poli.
- Pole vždy začíná od 0. pozice jako paralelní s většinou programovacích jazyků jako C, C ++, Python.
- Pokud je vaše pole multidimenzionální, musíte také zadat argument dimenze, který vezme číselné celé hodnoty jako 1, 2, 3 atd. 1 znamená jednorozměrný, 2 dvojrozměrný atd.
Doporučené články
Toto je průvodce funkcí VBA UBound. Zde diskutujeme o tom, jak používat Excel VBA UBound Function spolu s několika praktickými příklady a stahovatelnou šablonou Excel. Můžete si také prohlédnout naše další doporučené články -
- Funkce rozdělení VBA s příklady
- Excel Velká funkce
- VBA Match
- CEILING Funkce v Excelu
- Jak používat pracovní listy VBA?