Cilpas VBA

Pastāv situācijas, kad VBA programmai vairākas reizes pēc kārtas ir jāveic viena un tā pati darbību kopa (tas ir, vairākas reizes jāatkārto viens un tas pats koda bloks). To var izdarīt, izmantojot VBA cilpas.

VBA cilpas ietver:

Tālāk mēs sīkāk aplūkosim katru no šiem cikliem.

Visual Basic cilpas operatoram

Cilpas operatora struktūra Jūsu darbs IR Klientu apkalpošana Visual Basic var organizēt vienā no diviem veidiem: kā cilpa Par… Tālāk vai kā cilpa Katram.

Cikls “Par… Nākamo”

Cikls Par… Tālāk izmanto mainīgo, kas secīgi ņem vērtības no noteiktā diapazona. Ar katru mainīgā vērtības maiņu tiek veiktas cikla pamattekstā ietvertās darbības. To ir viegli saprast no vienkārša piemēra:

Ja i = 1 līdz 10 Kopā = Kopā + iArray(i) Nākamais i

Šajā vienkāršajā cilpā Par… Tālāk tiek izmantots mainīgais i, kas secīgi ņem vērtības 1, 2, 3, … 10, un katrai no šīm vērtībām tiek izpildīts VBA kods cilpas iekšpusē. Tādējādi šī cilpa summē masīva elementus. iArray mainīgajā Kopā.

Iepriekš minētajā piemērā cilpas pieaugums nav norādīts, tāpēc, lai palielinātu mainīgo i no 1 līdz 10, noklusējuma vērtība ir palielinājums 1… Tomēr dažos gadījumos cilpai ir jāizmanto dažādas pieauguma vērtības. To var izdarīt, izmantojot atslēgvārdu Soliskā parādīts nākamajā vienkāršajā piemērā.

Ja d = 0 līdz 10, darbība 0.1 dKopā = dKopā + d Nākamā d

Tā kā iepriekš minētajā piemērā pieauguma solis ir iestatīts vienāds ar 0.1, tad mainīgais dKopā katram cikla atkārtojumam iegūst vērtības 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Lai noteiktu cilpas soli VBA, varat izmantot negatīvu vērtību, piemēram, šādi:

Ja i = 10 līdz 1. solis -1 iArray(i) = i Nākamais i

Šeit ir pieaugums -1, tātad mainīgais i ar katru cikla atkārtojumu iegūst vērtības 10, 9, 8, … 1.

Cilpa “Katram”

Cikls Katram līdzīgs ciklam Par… Tālāk, bet tā vietā, lai atkārtotu skaitītāja mainīgā vērtību secību, cilpa Katram veic darbību kopumu katram objektam norādītajā objektu grupā. Nākamajā piemērā, izmantojot cilpu Katram uzskaita visas pašreizējās Excel darbgrāmatas lapas:

Aptumšot wSheet kā darblapu katrai w lapai darblapās MsgBox "Найден лист: " & wSheet.Name Next wSheet

Cikla pārtraukuma paziņojums “Iziet uz”

operators Iziet uz izmanto, lai pārtrauktu ciklu. Tiklīdz šis paziņojums tiek sastapts kodā, programma pabeidz cilpas izpildi un pāriet uz to priekšrakstu izpildi, kas atrodas kodā uzreiz pēc šīs cilpas. To var izmantot, piemēram, lai meklētu noteiktu vērtību masīvā. Lai to izdarītu, izmantojot cilpu, tiek skenēts katrs masīva elements. Tiklīdz nepieciešamais elements ir atrasts, pārējais nav jāmeklē – cikls tiek pārtraukts.

Operatora lietojumprogramma Iziet uz parādīts nākamajā piemērā. Šeit cilpa atkārto vairāk nekā 100 masīva ierakstus un salīdzina katru ar mainīgā vērtību dVal… Ja tiek atrasta atbilstība, cilpa tiek pārtraukta:

Ja i = 1 līdz 100 Ja dValues(i) = dVal, tad IndexVal = i Iziet uz beigu, ja nākamais i

Cilpa Do While cilpa programmā Visual Basic

Cikls Darīt kamēr izpilda koda bloku, kamēr tiek izpildīts norādītais nosacījums. Tālāk ir sniegts procedūras piemērs Saskaņā ar, kurā izmantojot cilpu Darīt kamēr Fibonači skaitļi, kas nepārsniedz 1000, tiek parādīti secīgi:

'Apakšprocedūra izvada Fibonači skaitļus, kas nepārsniedz 1000 Sub Fibonacci() Dim i As Integer' skaitītājs, lai norādītu elementa pozīciju secībā Dim iFib As Integer 'saglabā secības Dim iFib_Next As Integer pašreizējo vērtību. Saglabā nākamo vērtību no secības Dim iStep As Integer 'saglabā nākamā pieauguma lielumu' inicializē mainīgos i un iFib_Next i = 1 iFib_Next = 0 'Do While cilpa tiks izpildīta, līdz 'pašreizējā Fibonači skaitļa vērtība ir lielāka par 1000 = Doext1000 iFii_1 Kaut gan iFiib1_0 1 Pēc tam "īpašs gadījums pirmajam elementam iStep = 1 iFib = 1 Citādi "saglabājiet nākamā pieauguma lielumu, pirms pārrakstat secības pašreizējo vērtību iStep = iFib iFib = iFib_Next End If "izdrukājiet pašreizējo Fibonači numuru kolonnā A aktīvā darblapa 'rindā ar indeksu i Cells(i , XNUMX).Value = iFib 'aprēķināt nākamo Fibonači skaitli un palielināt elementa pozīcijas indeksu par XNUMX iFib_Next = iFib + iStep i = i + XNUMX cilpas beigu apakšpunkts

Dotajā piemērā nosacījums iFib_Next < 1000 pārbaudīts cilpas sākumā. Tāpēc, ja pirmā vērtība iFib_Next Ja to būtu vairāk par 1000, tad cilpa nekad netiktu izpildīta.

Vēl viens veids, kā īstenot cilpu Darīt kamēr - novietojiet nosacījumu nevis cilpas sākumā, bet gan beigās. Šajā gadījumā cilpa tiks izpildīta vismaz vienu reizi neatkarīgi no tā, vai nosacījums ir izpildīts.

Shematiski šāds cikls Darīt kamēr ar nosacījumu, kas jāpārbauda beigās, izskatīsies šādi:

Veiciet... Cikla, kamēr iFib_Next < 1000

Programmā Visual Basic noklikšķiniet uz “Darīt līdz”.

Cikls Darīt līdz ļoti līdzīgs ciklam Darīt kamēr: koda bloks cilpas pamattekstā tiek izpildīts atkal un atkal, līdz tiek izpildīts norādītais nosacījums (nosacījuma izteiksmes rezultāts ir Patiess). Nākamajā procedūrā Saskaņā ar izmantojot ciklu Darīt līdz izgūt vērtības no visām kolonnas šūnām A darblapā, līdz kolonna saskaras ar tukšu šūnu:

iRow = 1 Do Til IsEmpty(Cells(iRow, 1)) 'Pašreizējās šūnas vērtība tiek saglabāta masīvā dCellValues>dCellValues(iRow) = Cells(iRow, 1). Vērtība iRow = iRow + 1 Loop

Iepriekš minētajā piemērā nosacījums Ir tukšs (šūnas (iRinda, 1)) atrodas struktūras sākumā Darīt līdz, tāpēc cilpa tiks izpildīta vismaz vienu reizi, ja pirmā uzņemtā šūna nav tukša.

Tomēr, kā parādīts cilpas piemēros Darīt kamēr, dažās situācijās ir nepieciešams, lai cilpa tiktu izpildīta vismaz vienu reizi, neatkarīgi no nosacītās izteiksmes sākotnējā rezultāta. Šajā gadījumā nosacījuma izteiksme jāievieto cilpas beigās, piemēram:

Veiciet ... Apkopojiet līdz ir tukšs (šūnas (iRow, 1))

Atstāj atbildi