Smyčky VBA - Seznam nejlepších 4 typů smyček (s příklady)

Smyčky Excel VBA

Smyčky se běžně používají ve všech programovacích jazycích, kde existuje určitá potřeba nebo kritéria, kdy potřebujeme určitý kód pro spuštění v určitých časech, pro tyto kódy používáme smyčky, nyní existuje mnoho typů smyček ve VBA, jako je Do while, Do until, For Loop and For each loop, these loops help code to execute until the condition is met.

Dovolte mi učinit toto prohlášení na samém začátku. "Pokud chcete zvládnout ve VBA, musíte dokončit hlavní koncept smyček v makrech VBA."

Smyčka není nic jiného než procházet řadou buněk, procházet řadou objektů a opakovat stejný úkol pro sběr buněk nebo objektů. Místo provádění úkolu v samostatné sadě řádků kódů pomocí smyček můžeme délku kódu zkrátit na nejméně možnou.

Seznam nejlepších 4 typů smyček VBA

  1. Pro další smyčku
  2. Pro každou smyčku
  3. Dělejte smyčku
  4. Dělejte do smyčky

Podívejme se na každý z těchto typů podrobně.

Typ # 1 - Pro další smyčku

Smyčka For Next nám umožňuje procházet rozsahem buněk a provádět stejný úkol pro každou buňku uvedenou ve smyčce. Zde musíme říct počáteční a koncové číslo.

Příklad

Například pokud chcete vložit sériová čísla od 1 do 10, níže je tradiční způsob vkládání sériových čísel.

Podsériové číslo ()

Rozsah („A1“). Hodnota = 1
Rozsah („A2“). Hodnota = 2
Rozsah („A3“). Hodnota = 3
Rozsah („A4“). Hodnota = 4
Rozsah („A5“). Hodnota = 5
Rozsah („A6“). Hodnota = 6
Rozsah („A7“). Hodnota = 7
Rozsah („A8“). Hodnota = 8
Rozsah („A9“). Hodnota = 9
Rozsah („A10“). Hodnota = 10

End Sub

Vypadá dobře, že? Ale problém zde je pouze 10krát, co musíme provést. Představte si ale, co když chcete vložit 100 nebo 1000 čísel, můžete napsat kód 100 nebo 1000 řádků. Je to nemožné a právě tam se hodí krása smyčky For Next.

Krok 1: Otevřete makro a deklarujte proměnnou i jako celé číslo.

Sub Insert_Serial_Number ()

Dim i As Integer

End Sub

Krok 2: Nyní otevřete smyčku For . Zde uveďte začátek a konec smyčky pomocí proměnné i.

Krok 3: Nyní napište kód, který chcete provést. Musíme vložit čísla od 1 do 10 do buněk A1 až A10. Místo použití metody Range použijte metodu Cells.

Ptá se na číslo řádku, protože proměnnou i jsme nejprve deklarovali jako celé číslo. Jeho hodnota je 1. Takže uveďte, že se mi líbí vaše číslo řádku a 1 jako číslo vašeho sloupce.

Nyní by měla být hodnota aktuální hodnoty buňky jedna, namísto zmínky o čísle jedna zmíním i jako hodnotu. Vzhledem k tomu, pokaždé smyčka běží i hodnota se zvyšuje o 1.

Nyní stiskněte klávesu F8 a krokujte po jednom řádku. Stiskněte klávesu F8, dokud nedosáhne smyčky For.

Tato žlutá barva znamená, že vybraný řádek kódu bude spuštěn. Umístěte kurzor na I a zobrazí hodnotu jako nulu.

Nyní stiskněte ještě jednou klávesu F8 a umístěte kurzor na i a nyní je hodnota 1.

Takže hodnoty i ve všech jsou nyní rovny 1. „ Buňky (I, 1) .value = I“ znamená Buňky (1, 1) .value = 1.

Stiskněte klávesu F8 a podívejte se na hodnotu v buňce A1. V buňce A1 musíte vidět 1.

Nyní, pokud stisknete klávesu F8, vrátí se zpět do smyčky For ještě jednou, protože koncový limit proměnné i je 10. Tentokrát bude hodnota I 2.

Pro další smyčku poběží 10krát a vloží sériová čísla od 1 do 10.

Typ # 2 - pro každou smyčku

For each loop in VBA is for looping through a collection of objects. For next loop loops through the cells and perform the task, and For Each loop loops through objects like Worksheets, Charts, Workbooks, Shapes.

Pomocí této smyčky můžeme projít všechny pracovní listy a provést některé úkoly. Můžete například procházet všechny pracovní listy a skrýt a zobrazit pracovní listy.

Příklad č. 1

Pokud chcete skrýt všechny listy kromě listu, na kterém pracujete, jak to uděláte? Pokud máte v sešitu 20 listů, je to časově náročný proces. Ale pomocí smyčky FOR EACH můžeme tento úkol provést.

Mám 5 listů a chci skrýt všechny listy kromě listu „Hlavní“ pod kódem, který by to udělal za mě.

Sub To_Hide_All_Sheet ()

Dim Ws jako list

Pro každou Ws v ActiveWorkbook.Worksheets

Pokud Ws.Name „Main“, pak
Ws.Visible = xlSheetVeryHidden
Konec If

Další Ws

End Sub

Příklad č. 2

Chcete-li skrýt všechny skryté listy, pak za vás provede následující kód.

Sub To_UnHide_Specific_Sheet ()

Dim Ws jako list

Pro každou Ws v ActiveWorkbook.Worksheets

Ws.Visible = xlSheetVisible

Další Ws

End Sub

Zadejte # 3 - Proveďte smyčku

Smyčka Do While provádí úkol, zatímco daná podmínka má hodnotu PRAVDA a jakmile se podmínka stane NEPRAVDA, smyčka se zastaví. Na rozdíl od ostatních dvou smyček testuje Do While podmínku na konci smyčky, nikoli na začátku.

Ukážu vám příklad vložení sériových čísel pomocí smyčky Do While.

Sub Do_While_Example ()

Dim i As Integer

i = 1
Do While i <11
buněk (i, 1). Hodnota = i
i = i + 1
Loop

End Sub

Výše uvedená smyčka poběží, zatímco i je menší než 11 a stále vkládá sériová čísla. V okamžiku, kdy jsem větší než 11, přestane to opakovat.

Typ # 4 - Proveďte do smyčky

Na rozdíl od smyčky Do While smyčka Do While nefunguje, když je podmínka TRUE; spíše se točí, dokud podmínka není FALSE. Podívejte se například na níže uvedený kód.

Sub Do_Until_Example ()

Dim i As Integer

i = 1
Do Dokud i = 11
buněk (i, 1). Hodnota = i
i = i + 1
Smyčka

End Sub

Jediný rozdíl mezi smyčkou Do While & Do Until je operátor, který zadáme. V Do, Zatímco jsme zmínili spuštění smyčky, zatímco i je menší než (<), 11, ale ve smyčce do, jsme zmínili spuštění smyčky Dokud se i rovná (=) až 11.

Věci k zapamatování

  • Existuje pokročilejší příklad smyčky Excel VBA, ale každému z nich se budeme podrobně věnovat v samostatném článku.
  • Každá smyčka je pro objektové proměnné.
  • Ačkoli Do While & Do While vypadá stejně, zmínka o stavu je velmi důležitá.
  • Smyčky jsou velmi důležité pojmy.

Zajímavé články...