Excel VBA hurkok
A hurokokat általában az összes programozási nyelvben használják, ahol bizonyos igények vagy kritériumok merülnek fel, amikor egy bizonyos kód futtatásához szükségünk van egy adott idő futtatására, hurkokat használunk ezekhez a kódokhoz. míg a Add-ig, a hurokhoz és az egyes ciklusokhoz ezek a hurkok segítenek a kód végrehajtásában, amíg a feltétel nem teljesül.
Hadd tegyem ezt a megállapítást már a legelején. "Ha el akarsz sajátítani a VBA-ban, akkor be kell fejeznünk a hurkák fogalmát a VBA-makrókban."
A hurok nem más, mint egy cellatartományon való áthaladás, egy sor objektumon keresztül, hogy megismételje ugyanazt a feladatot a cellák vagy objektumok gyűjtésére. Ahelyett, hogy a feladatot külön kódsorban haladnánk hurkok használatával, a lehető legkisebbre csökkenthetjük a kód hosszát.

A VBA hurkok 4 legnépszerűbb típusának felsorolása
- A Next Loop számára
- Minden hurokhoz
- Tedd a hurok közben
- Tedd a hurokig
Nézzük meg részletesen ezeket a típusokat.
1. típus - A következő hurokhoz
A Next ciklus lehetővé teszi számunkra, hogy végigvigyen a cellatartományon, és ugyanazt a feladatot hajtsuk végre a ciklusban megadott minden cellánál. Itt meg kell mondanunk a kezdő és a vég számot.
Példa
Például, ha 1 és 10 közötti sorszámokat szeretne beilleszteni, akkor az alábbiakban a sorozatszámok beszúrásának hagyományos módja szerepel.
Alsó sorszám ()
Tartomány („A1”). Érték = 1
tartomány („A2”). Érték = 2
tartomány („A3”). Érték = 3
tartomány („A4”). Érték = 4
tartomány („A5”). Érték = 5
Tartomány („A6”). Érték = 6
tartomány („A7”). Érték = 7
tartomány („A8”). Érték = 8
tartomány („A9”). Érték = 9
tartomány („A10”). Érték = 10
End Sub
Jól néz ki, nem? De a probléma itt csak tízszeres, hogy ezt a feladatot végre kell hajtanunk. De képzelje el, mi van, ha 100 vagy 1000 számot szeretne beszúrni, megírhatja a kódot 100 vagy 1000 sorral. Lehetetlen, és itt jön jól a For Next hurok szépsége.
1. lépés: Nyissa makro- és állapítsa meg a változó i mint egész.
Sub Insert_Serial_Number ()
Dim i egész számként
End Sub
2. lépés: Most nyissa meg a For Loop elemet . Itt említsük meg a ciklus kezdetét és végét az i változó segítségével .

3. lépés: Most írja be a végrehajtani kívánt kódot. 1 és 10 közötti számokat kell beillesztenünk az A1 és A10 cellákba. A Range módszer alkalmazása helyett alkalmazza a Cellák módszert.

Kérdi a sorszámot, mivel az i változót először egész számként deklaráltuk . Értéke 1 Tehát oldalon i , mint a sor számát, és 1, mint a oszlop számát.

Most az aktuális cellaértéknek egynek kell lennie, ahelyett, hogy az első számú i értéket említenénk . Mivel minden ciklus futásakor az i értéke 1-gyel növekszik.

Most nyomja meg az F8 billentyűt, hogy egyenként lépjen. Nyomja meg az F8 billentyűt, amíg el nem éri a For ciklust.

Ez a sárga szín jelzi, hogy a kiválasztott kódsor futni készül. Helyezzen egy kurzort az I-re, és az értéke nulla lesz.

Most nyomja meg még egyszer az F8 billentyűt, és helyezzen egy kurzort az i-re .

Tehát az értékek i mindenhol most egyenlő 1. „ Cells (I, 1) .value = I” eszközzel sejteket (1, 1) .value = 1.
Nyomja meg az F8 billentyűt, és nézze meg az értéket az A1 cellában. Az A1 cellában 1-et kell látnia.

Most, ha megnyomja az F8 billentyűt, még egyszer visszatér a For ciklushoz, mert az i változó végkorlátja 10. Ez az I érték 2 lesz.

A Next ciklus 10-szer fog futni, és helyezze be az 1-től 10-ig terjedő sorszámokat.

2. típus - Minden hurokhoz
A VBA minden hurokja objektumgyűjteményen keresztüli hurkolásra szolgál. A következő ciklushoz a cellákon keresztül végez ciklust, és hajtsa végre a feladatot, az egyes ciklusok között pedig olyan objektumokat végez, mint a munkalapok, diagramok, munkafüzetek és alakzatok.
Ezt a ciklust használva átmehetünk az összes munkalapon és elvégezhetünk néhány feladatot. Például az összes munkalapon áttekintheti a munkalapok elrejtését és elrejtését.
1. példa
Ha el akarja rejteni az összes munkalapot, kivéve azt a lapot, amelyen dolgozik, hogyan fogja megtenni? Ha 20 lapja van a munkafüzetben, ez időigényes folyamat. De a MINDEN hurkon keresztül elvégezhetjük ezt a feladatot.
5 lapom van, és az összes lapot el akarom rejteni, kivéve, hogy a kód alatti „Fő” lap elvégzi a feladatot helyettem.
Sub To_Hide_All_Sheet ()
Dim Ws munkalapként
Minden W-re az ActiveWorkbookban. Munkafüzetek
Ha Ws.Name „Main”, akkor
Ws.Visible = xlSheetVeryHidden
End If
Következő Ws
End Sub
2. példa
Ha el szeretné rejteni az összes elrejtett lapot, akkor az alábbi kód elvégzi a munkát az Ön számára.
Sub To_UnHide_Specific_Sheet ()
Dim Ws munkalapként
Minden W-re az ActiveWorkbookban. Munkafüzetek
Ws.Visible = xlSheetVisible
Következő Ws
End Sub
# 3. Típus - Végezz hurok közben
A Do While ciklus akkor hajtja végre a feladatot, amikor az adott feltétel IGAZ, és amint a feltétel FALSE lesz, abbahagyja a ciklust. A másik két hurokkal ellentétben a Do While a ciklus végén, és nem az elején teszteli az állapotot.
Megmutatom a példát a sorozatszámok beszúrására a Do While ciklussal.
Sub Do_While_Example ()
Dim i egész számként
i = 1
Do While i <11
sejt (i, 1). Érték = i
i = i + 1
hurok
End Sub
A fenti ciklus addig fut, amíg i kevesebb, mint 11, és folyamatosan szúrja be a sorozatszámokat. Abban a pillanatban , hogy nagyobb leszek, mint 11, abbahagyja a hurkolást.
4. típus - Csináld a hurokig
A Do While ciklussal ellentétben a Do Until ciklus nem fut, amíg a feltétel IGAZ; inkább addig hurkol, amíg a feltétel HAMIS. Nézze meg például az alábbi kódot.
Sub Do_Until_Example ()
Dim i egész számként
i = 1
Addig, amíg i = 11
Cella (i, 1). Érték = i
i = i + 1
hurok
End Sub
Az egyetlen különbség a Do while & Do Until ciklus között az általunk megadott operátor. A Do-ban, miközben említettük a ciklus futtatását, amíg i kisebb, mint (<), 11, de a do-ig ciklust, addig említettük, hogy futtatjuk a ciklust, amíg i meg nem egyezik (=) -val 11-vel.
Dolgok, amikre emlékezni kell
- Van egy fejlettebb Excel VBA hurok példa, de mindegyiket külön cikkben részletesen bemutatjuk.
- Minden hurok objektumváltozókra vonatkozik.
- Bár a Do While & Do Until ugyanúgy néz ki, a feltétel megemlítése nagyon fontos.
- A hurkok nagyon fontos fogalmak.