Loops di VBA de

Rewş hene ku ji bernameyek VBA hewce ye ku heman koma çalakiyan çend caran li pey hev pêk bîne (ango, heman bloka kodê çend caran dubare bike). Ev dikare bi karanîna lûpên VBA ve were kirin.

Loopên VBA hene:

Dûv re, em ê ji nêz ve li her yek ji van dewranan binêrin.

Ji bo Operatorê Loop di Visual Basic de

Struktura operatorê loop Ew di Visual Basic de dikare di yek ji du awayan de were organîze kirin: wekî xelekek Ji bo… Piştre an jî wekî lûkek Ji bo her yekî.

Çêlika "Ji bo ... Piştre"

Zîvirok Ji bo… Piştre guhêrbarek bikar tîne ku bi rêzdarî nirxan ji rêzek diyarkirî digire. Bi her guheztina nirxa guhêrbar re, kiryarên ku di laşê çerxê de têne girtin têne kirin. Ji mînakek hêsan fêmkirina vê hêsan e:

Ji bo i = 1 Ber 10 Bi tevahî = Tevahiya + iArray (i) Piştre i

Di vê çerxa hêsan de Ji bo… Piştre guherbar tê bikaranîn i, ku li dû hev nirxan digire 1, 2, 3, ... 10, û ji bo her yek ji van nirxan, koda VBA di hundurê lûkê de tê darve kirin. Bi vî rengî, ev loop hêmanên rêzê berhev dike. iArray di guherbar Hemî.

Di mînaka jorîn de, zêdekirina lûkê nayê diyar kirin, ji ber vê yekê ji bo zêdekirina guhêrbar i ji 1 heta 10, xwerû zêdebûnek e 1… Lêbelê, di hin rewşan de hewce ye ku ji bo lûkê nirxên cûda yên zêdekirinê bikar bînin. Ev dikare bi karanîna keywordê were kirin Gavwek ku di mînaka hêsan a jêrîn de tê nîşandan.

Ji bo d = 0 Ber 10 Gav 0.1 dGemiya = dGemiya + d Piştre d

Ji ber ku di mînaka li jor de, pêngava zêdebûnê wekî hev tê danîn 0.1, paşê guherbar dTotal ji bo her dubarekirina çerxê nirxan digire 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Ji bo destnîşankirina gavê di VBA-yê de, hûn dikarin nirxek neyînî bikar bînin, mînakî, mîna vê:

Ji bo i = 10 To 1 Gav -1 iArray (i) = i Next i

Li vir zêdebûn e -1, ji ber vê yekê guherbar i bi her dubarekirina çerxê re nirxan 10, 9, 8,… 1 digire.

Loop "Ji bo Her"

Zîvirok Ji bo her yekî dişibihe çerxa Ji bo… Piştre, lê li şûna dubarekirina li ser rêza nirxan ji bo guhêrbara dijber, lûkê Ji bo her yekî Ji bo her tiştê di koma tiştên diyarkirî de komek çalakiyan pêk tîne. Di mînaka jêrîn de, bi kar tînin loop Ji bo her yekî di pirtûka xebatê ya niha ya Excel de hemî pelan dihejmêre:

WŞeet Weke Xebatkarê Ji Bo Her WPêxebatê Di Bernameya Xebatê de Dimîne MsgBox "Найден лист: " & wSheet.Name Next wSheet

Daxuyaniya qutbûnê ya "Derketin Bo"

Makînevan Derketin Ji bo ji bo qutkirina dewrê tê bikaranîn. Hema ku ev gotin di kodê de tê dîtin, bername cîbicîkirina lûkê diqedîne û tavilê piştî vê çerxê ber bi cîbicîkirina daxuyaniyên ku di kodê de ne diçe. Ev dikare were bikar anîn, ji bo nimûne, ji bo lêgerîna nirxek taybetî di nav rêzek de. Ji bo kirina vê yekê, bi karanîna xelekek, her hêmanek rêzê tê seh kirin. Mîna ku hêmana pêwîst were dîtin, ne hewce ye ku meriv li yên mayî binêre - çerx tê qut kirin.

Serlêdana operator Derketin Ji bo di mînaka jêrîn de destnîşan kir. Li vir xelek zêdetirî 100 navnîşên rêzê dubare dike û her yekê bi nirxa guhêrbar re dide ber hev. dVal… Ger hevokek were dîtin, wê gavê xelek bi dawî dibe:

Ji bo i = 1 Heta 100 Ger dValues ​​(i) = dVal Paşê IndexVal = i Ji Bo Dawî Derkeve Ger Paşê i

The Do When Loop di Visual Basic de

Zîvirok Dema bikin heta ku şertê diyarkirî pêk were blokek kodê pêk tîne. Li jêr mînakek prosedurekê ye bînrawe, ku tê de xelek bikar tîne Dema bikin Jimarên Fibonacci yên ku ji 1000-an derbas nabin bi rêz têne xuyang kirin:

'Pêvajoya jêr hejmarên Fibonacci ji 1000 ne zêdetir derdixe Sub Fibonacci() Dim i Wek Tevjimar' jimarker ji bo ku pozîsyona hêmanê di rêzikê de nîşan bide Dim iFib Wek Integer' nirxa heyî ya rêzikê Dim iFib_Piştre Wek Integer nirxa din hildide. ji rêzika Dim iStep Wek Integer 'mezinbûna zêdekirina paşerojê diparêze' guhêrbarên i û iFib_Next i = 1 iFib_Next = 0 'Do Gava ku lûpa wê bike dê heta ku nirxa 'hejmara Fibonacci ya niha ji 1000 mezintir be. Dema iFib_Next < 1000 Heke i = 1 Dûv re 'doza taybetî ji bo hêmana yekem iStep = 1 iFib = 0 Wekî din 'berî nivîsandina nirxa heyî ya rêzê iStep = iFib iFib = iFib_Next Dawî Heke 'hejmara Fibonacci ya heyî di stûna A de çap bike. pelgeya xebatê ya çalak 'di rêza bi îndeksa i Cells(i, 1).Nirx = iFib 'hejmara Fibonacci ya paşîn hesab bike û nîşaneya pozîsyona elementê bi 1 zêde bike iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Di mînaka diyarkirî de, şert iFib_Next < 1000 di destpêka lûkê de kontrol kirin. Ji ber vê yekê, eger nirxa yekem iFib_Next Ger ji 1000-î zêdetir bûya, wê gavê dê çu carî neyê darve kirin.

Rêbazek din ji bo pêkanîna loop Dema bikin - şertê ne li destpêkê, lê li dawiya lûkê bi cîh bikin. Di vê rewşê de, lûp dê bi kêmanî carekê were darve kirin, bêyî ku şert pêk were.

Skematîkî, çerxa weha Dema bikin bi şertê ku di dawiyê de were kontrol kirin dê wiha xuya bike:

Bikin ... Dema ku iFib_Next < 1000 Loop

Cîkl «Heta Bikin» di Visual Basic de

Zîvirok Bikin Heta pir dişibihe cycle Dema bikin: bloka kodê ya di laşê lûkê de dîsa û ji nû ve tê darve kirin heya ku şerta diyarkirî pêk were (encama bêjeya şertî ye rast). Di pêvajoya paşîn de bînrawe bi kar tînin a cycle Bikin Heta nirxan ji hemî hucreyên di stûnê de bistînin A pelgeya xebatê heya ku stûn bi şaneyek vala re rû bi rû bimîne:

iRow = 1 Bikin Heya IsEmpty(Cells(iRow, 1)) 'Nirxa şaneya heyî di rêzê de tê hilanîn

Di mînaka jorîn de, şert IsEmpty (Hucreyên (iRow, 1)) di destpêka avahiyê de cih digire Bikin Heta, ji ber vê yekê ger şaneya yekem a ku hatî girtin vala nebe, lûp dê herî kêm carekê were darve kirin.

Lêbelê, wekî ku di mînakên loop de têne xuyang kirin Dema bikin, di hin rewşan de hewce ye ku lûp bi kêmanî carekê were darve kirin, bêyî ku encama destpêkê ya îfadeya şertî hebe. Di vê rewşê de, divê bêjeya şertî li dawiya lûkê were danîn, mîna vê:

Bikin ... Bikin Heya Vala Bikin (Hêne(iRow, 1))

Leave a Reply