Mga loop sa VBA

Adunay mga sitwasyon kung ang usa ka VBA nga programa gikinahanglan sa paghimo sa sama nga hugpong sa mga aksyon sa daghang mga higayon sa usa ka laray (nga mao, balika ang sama nga block sa code sa makadaghang higayon). Mahimo kini gamit ang VBA loops.

Ang mga loop sa VBA naglakip sa:

Sunod, atong tan-awon pag-ayo ang matag usa niini nga mga siklo.

Alang sa Loop Operator sa Visual Basic

Ang istruktura sa loop operator ang sa Visual Basic mahimong organisado sa usa sa duha ka porma: isip loop Alang sa… Sunod o ingon nga usa ka loop Alang sa matag usa.

Siklo “Para sa … Sunod”

Siklo Alang sa… Sunod naggamit sa usa ka variable nga nagsunud-sunod nga nagkuha mga kantidad gikan sa gihatag nga range. Sa matag pagbag-o sa bili sa variable, ang mga aksyon nga gilakip sa lawas sa siklo gihimo. Kini dali sabton gikan sa usa ka yano nga pananglitan:

Para sa i = 1 Hangtod sa 10 Total = Total + iArray(i) Sunod i

Sa niining yano nga loop Alang sa… Sunod gigamit ang variable i, nga sunodsunod nga nagkuha sa mga kantidad 1, 2, 3, ... 10, ug alang sa matag usa niini nga mga kantidad, ang VBA code sa sulod sa loop gipatuman. Busa, kini nga loop nagsumada sa mga elemento sa array. iArray sa variable total.

Sa pananglitan sa ibabaw, ang pag-uswag sa loop wala gitino, aron madugangan ang variable i gikan sa 1 hangtod 10, ang default usa ka pagtaas 1… Bisan pa, sa pipila ka mga kaso kinahanglan nga mogamit lainlaing mga kantidad sa pagdugang alang sa loop. Mahimo kini gamit ang keyword Lakangingon sa gipakita sa mosunod nga yano nga pananglitan.

Para sa d = 0 Hangtod sa 10 nga Lakang 0.1 dTotal = dTotal + d Sunod d

Tungod kay sa pananglitan sa ibabaw, ang pag-uswag nga lakang gitakda nga parehas sa 0.1, unya ang variable dTotal alang sa matag pagbalik-balik sa siklo nagkuha sa mga kantidad nga 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Aron mahibal-an ang lakang sa loop sa VBA, mahimo nimong gamiton ang negatibo nga kantidad, pananglitan, sama niini:

Kay i = 10 Ngadto sa 1 Lakang -1 iArray(i) = i Sunod i

Ania ang pagtaas -1, mao nga ang variable i sa matag pagbalik-balik sa siklo nagkuha sa mga kantidad 10, 9, 8, ... 1.

Loop "Para sa Matag Usa"

Siklo Alang sa matag usa susama sa usa ka cycle Alang sa… Sunod, apan imbis nga mag-uli sa han-ay sa mga kantidad alang sa counter variable, ang loop Alang sa matag usa naghimo sa usa ka hugpong sa mga aksyon alang sa matag butang sa piho nga grupo sa mga butang. Sa mosunod nga pananglitan, gamit ang usa ka loop Alang sa matag usa nag-ihap sa tanang mga sheet sa kasamtangan nga workbook sa Excel:

Ipadpad ang wSheet Ingong Worksheet Para sa Matag wSheet sa Worksheet MsgBox "Wala'y lista: " & wSheet.Name Sunod nga wSheet

Loop interrupt nga pahayag "Exit For"

Operator Exit Para sa gigamit sa paghunong sa cycle. Sa diha nga kini nga pahayag makit-an sa code, ang programa nagtapos sa pagpatuman sa loop ug nagpadayon sa pagpatuman sa mga pahayag nga naa sa code pagkahuman dayon niini nga loop. Mahimo kini gamiton, pananglitan, sa pagpangita sa usa ka piho nga kantidad sa usa ka array. Aron mahimo kini, gamit ang usa ka loop, ang matag elemento sa array gi-scan. Sa diha nga ang gikinahanglan nga elemento makit-an, dili na kinahanglan nga tan-awon ang uban - ang siklo nabalda.

Aplikasyon sa operator Exit Para sa gipakita sa mosunod nga pananglitan. Dinhi ang loop nag-usab sa labaw sa 100 ka array entries ug nagtandi sa matag usa sa bili sa variable dVal… Kung makit-an ang usa ka posporo, dayon ang loop mahunong:

Para sa i = 1 Hangtod sa 100 Kung dValues(i) = dVal Unya IndexVal = i Exit For End Kung Sunod i

Ang Buhata Samtang Loop sa Visual Basic

Siklo Buhata samtang nagpatuman sa usa ka bloke sa code basta matuman ang gitakdang kondisyon. Ang mosunod usa ka pananglitan sa usa ka pamaagi sub, diin gigamit ang loop Buhata samtang Ang mga numero sa Fibonacci nga dili molapas sa 1000 gipakita nga sunud-sunod:

Ang 'Sub procedure nagpagawas sa mga numero sa Fibonacci nga dili molapas sa 1000 Sub Fibonacci() Dim i As Integer' counter aron ipakita ang posisyon sa elemento sa sequence Dim iFib Samtang ang Integer 'nagtipig sa kasamtangan nga bili sa sequence Dim iFib_Next Samtang ang Integer 'nagtipig sa sunod nga bili sa han-ay Dim iStep Ingon Integer 'nagtipig gidak-on sa sunod nga increment' inisyal nga mga baryable i ug iFib_Next i = 1 iFib_Next = 0 'Do While loop ipatuman hangtod ang kantidad sa 'kasamtang Fibonacci nga numero mas dako pa sa 1000 Do Samtang iFib_Next < 1000 Kung i = 1 Unya 'espesyal nga kaso alang sa unang elemento iStep = 1 iFib = 0 Lain pa 'i-save ang gidak-on sa sunod nga pagtaas sa dili pa i-overwriting' ang kasamtangan nga bili sa han-ay iStep = iFib iFib = iFib_Next End Kung 'i-print ang kasamtangan nga numero sa Fibonacci sa column A sa ang aktibong worksheet 'sa laray nga adunay index i Cells(i , 1)

Sa gihatag nga pananglitan, ang kahimtang iFib_Next < 1000 gisusi sa sinugdanan sa loop. Busa, kon ang unang bili iFib_Sunod Kung adunay labaw pa sa 1000, nan ang loop dili gayud ipatuman.

Ang laing paagi sa pagpatuman sa usa ka loop Buhata samtang - ibutang ang kondisyon dili sa sinugdanan, apan sa katapusan sa loop. Sa kini nga kaso, ang loop ipatuman labing menos kausa, bisan kung ang kondisyon natuman.

Sa eskematiko, ang ingon nga siklo Buhata samtang uban ang kondisyon nga susihon sa katapusan mahimong ingon niini:

Buhata ... Loop Samtang iFib_Next < 1000

Цикл "Buhata Hangtud" sa Visual Basic

Siklo Buhata Hangtod parehas kaayo sa cycle Buhata samtang: ang block sa code sa lawas sa loop gipatuman balik-balik hangtud nga matuman ang gitakda nga kondisyon (ang resulta sa conditional expression mao ang Tinuod nga). Sa sunod nga pamaagi sub gamit ang cycle Buhata Hangtod kuhaa ang mga kantidad gikan sa tanan nga mga cell sa usa ka kolum A worksheet hangtod ang kolum makasugat ug walay sulod nga cell:

iRow = 1 Buhata Until IsEmpty(Cells(iRow, 1)) 'Ang bili sa kasamtangan nga cell gitipigan sa array dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

Sa pananglitan sa ibabaw, ang kondisyon Walay Kawala(Mga Cell(iRow, 1)) nahimutang sa sinugdanan sa istruktura Buhata Hangtod, mao nga ang loop ipatuman labing menos kausa kung ang unang cell nga gikuha walay sulod.

Bisan pa, ingon sa gipakita sa mga pananglitan sa loop Buhata samtang, sa pipila ka mga sitwasyon gikinahanglan nga ang loop ipatuman labing menos kausa, bisan unsa pa ang unang resulta sa conditional expression. Sa kini nga kaso, ang conditional nga ekspresyon kinahanglan ibutang sa katapusan sa loop, sama niini:

Buhata ... Loop Hangtud Mawala(Cells(iRow, 1))

Leave sa usa ka Reply