Einfaldasta gerð lykkja í Excel VBA forritun er For-Next lykkja. Lykkjunni er stjórnað af teljarabreytu, sem byrjar á einu gildi og stoppar á öðru gildi. Fullyrðingarnar á milli For yfirlýsingarinnar og Next yfirlýsingarinnar eru fullyrðingarnar sem endurtaka sig í lykkju.
For-Next dæmi
Eftirfarandi dæmi notar For-Next lykkju til að leggja saman fyrstu 1.000 jákvæðu tölurnar. Heildarbreytan byrjar sem núll. Þá á sér stað lykkjan. Breytan Cnt er lykkjateljarinn. Það byrjar sem 1 og er aukið um 1 í hvert skipti í gegnum lykkjuna. Lykkjan endar þegar Cnt er 1.000.
Þetta dæmi hefur aðeins eina fullyrðingu inni í lykkjunni. Þessi fullyrðing bætir gildi Cnt við Total breytuna. Þegar lykkjunni lýkur sýnir MsgBox summan af tölunum.
Undirbætanúmer()
Dim Total As Double
Dim Cnt As Long
Samtals = 0
Fyrir Cnt = 1 Til 1000
Samtals = Samtals + Cnt
Næsta Cnt
MsgBox Samtals
End Sub
Vegna þess að lykkjateljarinn er venjuleg breyta geturðu skrifað kóða til að breyta gildi hans innan kóðablokkarinnar á milli For og Next setninganna. Þetta er hins vegar mjög slæm vinnubrögð.
For-Next dæmi með skrefi
Þú getur notað skrefgildi til að sleppa nokkrum teljaragildum í For-Next lykkju. Hér er fyrra dæmið, endurskrifað til að leggja aðeins saman oddatölurnar á milli 1 og 1.000:
Undir AddOddNumbers()
Dim Total As Double
Dim Cnt As Long
Samtals = 0
Fyrir Cnt = 1 Til 1000 Skref 2
Samtals = Samtals + Cnt
Næsta Cnt
MsgBox Samtals
End Sub
Í þetta skiptið byrjar Cnt sem 1 og tekur síðan gildin 3, 5, 7 o.s.frv. Skref gildið ákvarðar hvernig teljarinn er aukinn. Taktu eftir að efri lykkjugildið (1000) er í raun ekki notað vegna þess að hæsta gildi Cnt verður 999.
Hér er annað dæmi sem notar þrepagildið 3. Þessi aðferð virkar með virka blaðinu og beitir ljósgráum skyggingum á þriðju hverja röð, frá röð 1 til línu 100.
Sub ShadeEveryThird Row()
Dim i As Long
Fyrir i = 1 Til 100 Skref 3
Raðir(i).Interior.Color = RGB(200, 200, 200)
Næst i
End Sub
Skoðaðu niðurstöðuna af því að keyra þetta fjölvi.

Notaðu lykkju til að setja bakgrunnsskyggingu á línur.
For-Next dæmi með Exit For yfirlýsingu
For-Next lykkja getur einnig innihaldið eina eða fleiri Exit For staðhæfingar innan lykkjunnar. Þegar VBA rekst á þessa yfirlýsingu lýkur lykkjan strax.
Eftirfarandi dæmi sýnir Exit For yfirlýsinguna. Þessi venja er aðgerðaferli, sem ætlað er að nota í formúlu vinnublaðs. Fallið tekur við einni frumbreytu (breytu sem heitir Str) og skilar stöfunum vinstra megin við fyrsta tölustafinn. Til dæmis, ef röksemdin er „KBR98Z,“ skilar fallið „KBR“.
Aðgerð TextPart(Str)
Dim i As Long
TextPart = ““
Fyrir i = 1 Til Len(Str)
Ef IsNumeric(Mid(Str, i, 1)) Þá
Hætta fyrir
Annar
TextPart = TextPart & Mid(Str, i, 1)
End If
Næst i
Lokaaðgerð
For-Next lykkjan byrjar á 1 og endar á tölunni sem táknar fjölda stafa í strengnum. Kóðinn notar miðfall VBA til að draga út einn staf í lykkjunni. Ef tölustafur finnst er Exit For setningin keyrð og lykkjan endar of snemma.
Ef stafurinn er ekki tölulegur er honum bætt við skilað gildi (sem er það sama og nafn fallsins). Eina skiptið sem lykkjan skoðar hvern staf er ef strengurinn hefur farið fram þar sem rökin innihalda enga tölustafi.
Hreiður For-Next dæmi
Þú getur haft hvaða fjölda staðhæfinga sem er í lykkjunni og hreiður For-Next lykkjur inni í öðrum For-Next lykkjum.
Eftirfarandi dæmi notar hreiðraða For-Next lykkju til að setja inn handahófskenndar tölur í 12 raðir-fyrir-5-dálka svið af hólfum. Taktu eftir að venjan framkvæmir innri lykkjuna (lykkjuna með línuteljaranum) einu sinni fyrir hverja endurtekningu á ytri lykkjunni (lykkjan með Col teljara). Með öðrum orðum, venjan keyrir setninguna Cells(Row, Col) = Rnd 60 sinnum.

Þessar frumur voru fylltar með því að nota hreidda For-Next lykkju.
Sub FillRange()
Dim Col As Long
Dim Row As Long
Fyrir Col = 1 Til 5
Fyrir röð = 1 til 12
Frumur (Row, Col) = Rnd
Næsta röð
Næsti Col
End Sub
Næsta dæmi notar hreiður For-Next lykkjur til að frumstilla þrívíddarfylki með gildinu 100. Þessi venja keyrir setninguna í miðjum öllum lykkjunum (úthlutunarsetningin) 1.000 sinnum (10 * 10 * 10), í hvert sinn með mismunandi samsetningu gilda fyrir i, j og k:
Sub NestedLoops()
Dimma MyArray(10, 10, 10)
Dim i As Long
Dim j As Long
Dim k As Long
Fyrir i = 1 til 10
Fyrir j = 1 til 10
Fyrir k = 1 til 10
MyArray(i, j, k) = 100
Næsta k
Næsta j
Næst i
' Aðrar yfirlýsingar fara hér
End Sub
Hér er síðasta dæmi sem notar hreiður For-Next lykkjur, með Step gildi. Þessi aðferð býr til skákborð með því að breyta bakgrunnslit hólfa til skiptis.

Notaðu lykkjur til að búa til skálmynstur.
Lóðateljarinn fer í lykkjur frá 1 til 8. Ef-þá smíði ákvarðar hvaða hreiður For-Next uppbyggingu á að nota. Fyrir oddanúmeraðar raðir byrjar Col-teljarinn á 2. Fyrir jafnnúmeraðar línur byrjar Col-teljarinn á 1. Báðar lykkjurnar nota þrepagildið 2, þannig að varafrumur verða fyrir áhrifum. Tvær fullyrðingar til viðbótar gera frumurnar ferninga (alveg eins og alvöru skákborð).
Undir MakeCheckerboard()
Dimm R eins lengi, C eins lengi
Fyrir R = 1 til 8
Ef WorksheetFunction.IsOdd(R) Þá
Fyrir C = 2 Til 8 Skref 2
Frumur(R, C).Innri.Litur = 255
Næsti C
Annar
Fyrir C = 1 Til 8 Skref 2
Frumur(R, C).Innri.Litur = 255
Næsti C
End If
Næsti R
Rows(“1:8”).RowHeight = 35
Dálkar(“A:H”). Dálkabreidd = 6,5
End Sub