Vienkāršākais cilpas veids programmā Excel VBA ir For-Next cilpa. Cilpu kontrolē skaitītāja mainīgais, kas sākas ar vienu vērtību un apstājas pie citas vērtības. Paziņojumi starp priekšrakstu For un Next ir paziņojumi, kas tiek atkārtoti cilpas laikā.
Piemērs Nākamajam
Nākamajā piemērā tiek izmantota cilpa For-Next, lai summētu pirmos 1000 pozitīvos skaitļus. Mainīgais Kopējais sākas ar nulli. Tad notiek cilpa. Mainīgais Cnt ir cilpas skaitītājs. Tas sākas ar 1 un katru reizi tiek palielināts par 1, izmantojot cilpu. Cilpa beidzas, kad Cnt ir 1000.
Šajā piemērā cilpas iekšpusē ir tikai viens paziņojums. Šis paziņojums pievieno Cnt vērtību mainīgajam Total. Kad cilpa beidzas, MsgBox parāda skaitļu summu.
Sub AddNumbers()
Dim Total As Double
Dim Cnt Tik ilgi
Kopā = 0
Ja Cnt = 1 līdz 1000
Kopā = Kopā + Cnt
Nākamais Cnt
MsgBox kopā
Beigu apakš
Tā kā cilpas skaitītājs ir parasts mainīgais, varat rakstīt kodu, lai mainītu tā vērtību koda blokā starp priekšrakstiem For un Next. Tomēr tā ir ļoti slikta prakse.
For-Next piemēri ar soli
Varat izmantot Step vērtību, lai izlaistu dažas skaitītāja vērtības cilpā For-Next. Šis ir iepriekšējais piemērs, kas pārrakstīts, lai summētu tikai nepāra skaitļus no 1 līdz 1000:
Sub AddOddNumbers()
Dim Total As Double
Dim Cnt Tik ilgi
Kopā = 0
Ja Cnt = 1 līdz 1000, 2. darbība
Kopā = Kopā + Cnt
Nākamais Cnt
MsgBox kopā
Beigu apakš
Šoreiz Cnt sākas ar 1 un pēc tam iegūst vērtības 3, 5, 7 utt. Step vērtība nosaka, kā skaitītājs tiek palielināts. Ņemiet vērā, ka augšējā cilpas vērtība (1000) faktiski netiek izmantota, jo lielākā Cnt vērtība būs 999.
Šeit ir vēl viens piemērs, kurā tiek izmantota soļa vērtība 3. Šī procedūra darbojas ar aktīvo lapu un katrai trešajai rindai piemēro gaiši pelēku ēnojumu no 1. līdz 100. rindai.
Sub ShadeEveryThirdRow()
Dim i As Long
Ja i = 1 līdz 100, 3. darbība
Rindas(i). Interjers. Krāsa = RGB(200, 200, 200)
Nākamais i
Beigu apakš
Apskatiet šī makro palaišanas rezultātu.
Izmantojot cilpu, lai rindām lietotu fona ēnojumu.
Piemērs For-Next ar paziņojumu Exit For
For-Next cilpa var ietvert arī vienu vai vairākus Exit For priekšrakstus cilpas ietvaros. Kad VBA saskaras ar šo paziņojumu, cilpa nekavējoties tiek pārtraukta.
Nākamajā piemērā ir parādīts priekšraksts Exit For. Šī rutīna ir funkciju procedūra, kas paredzēta izmantošanai darblapas formulā. Funkcija pieņem vienu argumentu (mainīgo ar nosaukumu Str) un atgriež rakstzīmes pa kreisi no pirmā ciparu cipara. Piemēram, ja arguments ir “KBR98Z”, funkcija atgriež “KBR”.
Funkcijas teksta daļa (Str)
Dim i As Long
TextPart = ""
Ja i = 1 līdz Len(Str)
Ja IsNumeric(Mid(Str, i, 1)) Tad
Iziet uz
Citādi
TextPart = TextPart & Mid(Str, i, 1)
Beigas Ja
Nākamais i
Beigu funkcija
Cilpa For-Next sākas ar 1 un beidzas ar skaitli, kas apzīmē rakstzīmju skaitu virknē. Kods izmanto VBA funkciju Mid, lai cilpas ietvaros iegūtu vienu rakstzīmi. Ja tiek atrasta ciparu rakstzīme, tiek izpildīts priekšraksts Exit For, un cilpa beidzas priekšlaicīgi.
Ja rakstzīme nav skaitliska, tā tiek pievienota atgrieztajai vērtībai (kas ir tāda pati kā funkcijas nosaukums). Vienīgā reize, kad cilpa pārbaudīs katru rakstzīmi, ir tad, ja argumentā nodotā virkne nesatur ciparu rakstzīmes.
Ligzdotas For-Next piemērs
Ciklā var būt neierobežots skaits priekšrakstu, un cilpas For-Next ievietojiet citās For-Next cilpās.
Nākamajā piemērā tiek izmantota ligzdotā cilpa For-Next, lai ievietotu nejaušus skaitļus 12 rindu pa 5 kolonnu šūnu diapazonā. Ņemiet vērā, ka rutīna izpilda iekšējo cilpu (cilpu ar rindu skaitītāju) vienu reizi katrā ārējās cilpas atkārtojumā (cilpa ar Col skaitītāju). Citiem vārdiem sakot, rutīna izpilda Cells(Row, Col) = Rnd priekšrakstu 60 reizes.
Šīs šūnas tika aizpildītas, izmantojot ligzdotu For-Next cilpu.
Sub FillRange()
Dim Col As Long
Dim Row As Long
Kolonnā = 1 līdz 5
Rindai = 1 līdz 12
Šūnas (rinda, kolonna) = Rnd
Nākamā rinda
Nākamais plkv
Beigu apakš
Nākamajā piemērā tiek izmantotas ligzdotas For-Next cilpas, lai inicializētu trīsdimensiju masīvu ar vērtību 100. Šī rutīna izpilda priekšrakstu visu cilpu vidū (piešķiršanas priekšraksts) 1000 reizes (10 * 10 * 10), katru reizi. ar atšķirīgu i, j un k vērtību kombināciju:
Sub NestedLoops()
Dim MyArray (10, 10, 10)
Dim i As Long
Dim j Tik ilgi
Dim k Tik ilgi
Ja i = 1 līdz 10
Ja j = 1 līdz 10
Ja k = 1 līdz 10
MyArray(i, j, k) = 100
Nākamais k
Nākamais j
Nākamais i
Citi paziņojumi ir šeit
Beigu apakš
Šis ir pēdējais piemērs, kurā tiek izmantotas ligzdotas For-Next cilpas ar Step vērtību. Šī procedūra izveido šaha laukumu, mainot mainīgo šūnu fona krāsu.
Izmantojot cilpas, lai izveidotu šaha paraugu.
Rindas skaitītājs cilpas no 1 līdz 8. Ja-Tad konstrukcija nosaka, kuru ligzdoto For-Next struktūru izmantot. Nepāra rindām kolonnu skaitītājs sākas ar 2. Pāra skaitļu rindām Col skaitītājs sākas ar 1. Abās cilpās tiek izmantota soļa vērtība 2, tāpēc tiek ietekmētas alternatīvās šūnas. Divi papildu paziņojumi padara šūnas kvadrātveida (tāpat kā īstā šaha galdiņā).
Sub MakeCheckerboard()
Dim R As Long, C As Long
Ja R = 1 līdz 8
Ja WorksheetFunction.IsOdd(R) Tad
Ja C = 2 līdz 8, 2. darbība
Šūnas (R, C).Interjers.Krāsa = 255
Nākamais C
Citādi
Ja C = 1 līdz 8, 2. darbība
Šūnas (R, C).Interjers.Krāsa = 255
Nākamais C
Beigas Ja
Nākamais R
Rindas (“1:8”). Rindas augstums = 35
Kolonnas (“A:H”). Kolonnas platums = 6,5
Beigu apakš