Chcete automatizovat opakující se úlohy v Excelu pomocí VBA? Naučte se používat smyčku For Each k efektivní manipulaci s daty ve vašich tabulkách.
Smyčky a VBA jdou dohromady, a to z dobrého důvodu. Při práci s objekty sady Microsoft Office, jako jsou sešity, listy a rozsahy, vám smyčky pomohou relativně snadno přepínat mezi každým z nich.
Zatímco víceméně všechny smyčky VBA fungují dobře s objekty, smyčka „pro každého“ je jednou z nejlepších možností pro práci s kolekcemi objektů. Pokud s Excelem VBA začínáte a chcete si osvojit pro každou smyčku, můžete se rychle poučit z některých z těchto příkladů. Zde je vše, co potřebujete vědět o této základní smyčce.
Pro syntaxi každé smyčky
Syntaxe pro každou smyčku je velmi podobná obvyklé smyčce for v Excel VBA. Zde je syntaxe:
Pro každý název_proměnné v kolekci_objektů
[prohlášení]
[prohlášení]
[prohlášení]
Další název_proměnné
Cyklus začíná klíčovým slovem "pro každého"; můžete použít libovolný název proměnné, za kterým následuje kolekce objektů. Objektem pro každou smyčku mohou být buňky, rozsahy, listy a dokonce i sešity. Taková je krása této smyčky; poskytuje vám flexibilitu při práci s různými kolekcemi aplikace Excel.
Smyčka prochází každou hodnotou kolekce a ukládá odkaz pod definovaný název proměnné. Po provedení VBA provede uložené příkazy v rámci smyčky a přesune se na další objekt v kolekci ( další klíčové slovo je zde užitečné). Pojďme pochopit strukturu kódu na základním příkladu.
Jak používat pro každou smyčku v Excelu VBA
Předpokládejme, že chcete vytisknout číslo v buňkách A1 až A10. Nejlepším přístupem je použít pro každou smyčku s funkcí rozsahu a nechat kód udělat potřebné. Tento jednoduchý úkol můžete provést takto:
- Otevřete editor kódu VBA stisknutím Alt + F11.
- Modul vložíte kliknutím na Modul možnost v rámci Vložit tab.
- Vytvořte podprogram pomocí příkazu sub() v okně modulu editoru kódu. Ujistěte se, že jste podprogramu přiřadili smysluplný název. Pro tento příklad můžete použít název for_each_loop.
Nyní, když jsou základy z cesty, je čas začít psát kód. V rámci podprogramu zadejte následující příkazy:
Ztlumená buňka tak jako rozsah
Pro každou buňku v Povlečení na postel("List1").Rozsah("A1:A10")
cell.value = 10
Další buňka
Když se kód spustí, C proměnná bude ukládat hodnotu A1. Poté, když přejde k příkazu v rámci cyklu, vyhodnotí příkaz a zadá hodnotu 10 do definované buňky, tj. buňky A1.
Nakonec, když se přesune na klíčové slovo Další, přesune se na další hodnotu, tj. buňku A2. Smyčka běží, dokud nedosáhne buňky A10. Toto je konečný výstup:
Použití smyčky s objekty: buňky, listy a sešity
Excel má tři hlavní typy objektů, se kterými pravidelně pracujete. Jsou to buňky, listy a sešity. Zde je návod, jak můžete použít smyčku se všemi třemi typy objektů.
Práce s buňkami a smyčkami dohromady
Předpokládejme, že chcete přidat hodnotu a některé podmínky formátování do rozsahu buněk v List1. Jako první krok musíte definovat podmínky v rámci smyčky a poté příkazy pro formátování.
Zadejte následující kód v rámci podprogramu.
Sub for_each_loop()
Ztlumit c Tak jako Rozsah
Pro každé c v listech("List1").Rozsah("A1:A10")
S C
.Hodnota = 10
.Písmo. Barva = vbRed
.Písmo. Tučné = Skutečný
.Písmo. Přeškrtnuté = Skutečný
KonecS
Další c
Konec Sub
The s Funkce je užitečná při provádění více funkcí s jedním konkrétním objektem. Protože chcete provést řadu úloh s proměnnou c, můžete je všechny zkombinovat pomocí funkce a with..end with.
Smyčka srovná hodnotu c s hodnotou každé buňky a zadá hodnotu jako 10. Navíc změní barvu buňky na červenou, hodnotu zvýrazní tučně a přeškrtne ji. Jakmile dokončí všechny kroky, přesune se na další definovanou hodnotu v rozsahu.
Použití smyčky k ovládání listů
Podobně jako ve výše uvedeném příkladu můžete pro řízení listů použít pro každou smyčku. Co takhle změnit název List1 na List3 pomocí VBA?
K přejmenování existujícího listu v Excelu pomocí VBA můžete použít následující kód:
Sub for_each_loop_sheets()
ProKaždýshtvTento sešit.Povlečení na postel
Pokud sht. Jméno = "List1" Pak
sht. Jméno = "List 3"
KonecLi
Další sht
Konec Sub
Kód prochází každý list v sešitu a kontroluje název každého listu. Pokud narazí na název List1, změní jej na List3. Postupuje se zbývajícími listy, pokud existují, v sešitu. Jakmile spuštění kódu dosáhne posledního listu, opustí smyčku a podprogram.
Kromě některých dalších běžných použití můžete sloučit více listů pomocí VBA a aktualizovat obsah na jednom listu pomocí smyček.
Přepínat mezi sešity pomocí smyčky
Nakonec můžete použít pro každou smyčku pro přepínání mezi různými sešity a provádění konkrétních úkolů. Ukažme si tuto funkci na příkladu.
Pomocí příkazů VBA můžete přidat tři nové sešity a všechny otevřené společně zavřít. Můžete to udělat takto:
Sub loop_wrkbook()
Tlumený pracovní sešit tak jako pracovní sešit
Pracovní sešity.Přidat
Pracovní sešity.Přidat
Pracovní sešity.Přidat
Pro každý sešit v sešitech
pracovní kniha.Zavřít
Další sešit
Konec Sub
Výše uvedený kód také zavře sešit maker; před spuštěním tohoto kódu se ujistěte, že jste uložili své kódy.
Protože smyčky mají více použití, můžete také konsolidovat data z více sešitů do jednoho sešitu.
Použití vnořeného příkazu IF se smyčkou
Stejně jako výše uvedený příklad můžete použít příkaz IF v rámci smyčky ke kontrole specifických podmínek. Změňme barvu pozadí buňky na základě hodnot buňky.
V buňkách A1:A20 je několik náhodných čísel. Můžete napsat smyčku pro procházení každou danou buňkou v rozsahu; pokud je hodnota buňky menší než 10, barva buňky by se měla změnit na červenou. Pokud hodnota buňky přesáhne 10, měla by zezelenat. Pro tento účel použijte následující kód:
Sub loop_w_if()
Ztlumit c Tak jako Rozsah
Pro každé c v listech("List4").Rozsah("A1:A20")
LiC.Hodnota < 10 Pak
C. Interiér. ColorIndex = 3
Jiný: c. Interiér. ColorIndex = 4
KonecLi
Další c
Konec Sub
Takto vypadá výstup:
Použití smyček v Excelu VBA
Excel VBA není omezen pouze na pro každou smyčku. Existuje celá řada užitečných smyček, které vám umožní snadno provádět různé funkce. Rozlučte se se všedními, manuálními úkoly, jako jsou smyčky VBA, jako je smyčka for, dělejte while a dělejte, dokud se nezapojí smyčky, které vám usnadní život.