Loops muVBA

Pane mamiriro ezvinhu apo chirongwa cheVBA chinodiwa kuita seti imwechete yezviito kakawanda mumutsara (kureva, kudzokorora bhuroko rimwechete rekodhi kakawanda). Izvi zvinogona kuitwa uchishandisa VBA zvishwe.

VBA zvishwe zvinosanganisira:

Tevere, tinozonyatsotarisisa pane imwe neimwe yeaya matenderedzwa.

YeLoop Operator muVisual Basic

Chimiro cheloop operator The muVisual Basic inogona kurongeka mune imwe yemhando mbiri: sechiuno For… Next kana sechishwe Kune Mumwe nemumwe.

Cycle “For… Next”

Purogiramu For… Next inoshandisa shanduko iyo inoteedzana inotora kukosha kubva kune yakapihwa renji. Nekushanduka kwega kwega kwekukosha kwekusiyana, zviito zvakavharwa mumutumbi wekutenderera zvinoitwa. Izvi zviri nyore kunzwisisa kubva mumuenzaniso wakapfava:

Nokuti ini = 1 kusvika 10 Total = Total + iArray(i) Next i

Mune iri nyore loop For… Next variable inoshandiswa i, iyo inoteedzana inotora kukosha 1, 2, 3, ... 10, uye kune imwe neimwe yeaya ma values, iyo VBA kodhi mukati me loop inoitwa. Nokudaro, loop iyi inounganidza zvinhu zvehurongwa. iArray in variable muunganidzwa.

Mumuenzaniso wepamusoro, iyo loop increment haina kutaurwa, saka kuwedzera kusiyanisa i kubva pa1 kusvika pa10, iyo default ndeyekuwedzera 1... Nekudaro, mune zvimwe zviitiko zvinodikanwa kushandisa akasiyana ekuwedzera kukosha kune loop. Izvi zvinogona kuitwa uchishandisa keyword Stepsezvinoratidzwa mumuenzaniso uri nyore unotevera.

Ye d = 0 kusvika 10 Danho 0.1 dTotal = dTotal + d Inotevera d

Sezvo mumuenzaniso wepamusoro, danho rekuwedzera rakaiswa kuenzana ne 0.1, ipapo shanduko dTotal pakudzokorora kwega kwega kutenderera kunotora kukosha 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Kuti uone nhanho yechiuno muVBA, unogona kushandisa kukosha kwakashata, semuenzaniso, seizvi:

For i = 10 Ku 1 Danho -1 iArray(i) = i Next i

Uku ndiko kuwedzera -1, saka shanduko i nekudzokorora kwega kwega kutenderera kunotora kukosha 10, 9, 8, ... 1.

Loop "Kune Imwe neimwe"

Purogiramu Kune Mumwe nemumwe zvakafanana nedenderedzwa For… Next, asi pachinzvimbo chekudzokorora pamusoro pekutevedzana kwehunhu hweiyo counter kusiyanisa, loop Kune Mumwe nemumwe inoita seti yezviito zvechinhu chimwe nechimwe muboka rataurwa rezvinhu. Mumuenzaniso unotevera, kushandisa loop Kune Mumwe nemumwe inoverengera mapepa ese mune yazvino Excel workbook:

Dim wSheet Sebepa reKushanda reWhepa rega rega muMashizha eKushanda MsgBox "Найден лист: " & wSheet.Zita Rinotevera wSheet

Loop kukanganisa chirevo "Exit For"

Operator ExitFor inoshandiswa kukanganisa kutenderera. Pakarepo apo chirevo ichi chinosangana nekodhi, purogiramu inopedzisa kuurayiwa kwechiuno uye inoenderera mberi nekuita zvirevo zviri mukodhi pakarepo mushure mechiuno ichi. Izvi zvinogona kushandiswa, semuenzaniso, kutsvaga kukosha kwakakosha mune array. Kuti uite izvi, uchishandisa loop, chimwe nechimwe chinhu chechikwata chinoongororwa. Pangosvika chinhu chinodiwa chinowanikwa, hapana chikonzero chekutarisa kuburikidza nekuzorora - kutenderera kunokanganiswa.

Operator application ExitFor zvinoratidzwa mumuenzaniso unotevera. Pano loop inodzokorora pamusoro pe 100 array entries uye inoenzanisa imwe neimwe nekukosha kwekusiyana. dVal… Kana machisi awanikwa, loop inomiswa:

For i = 1 Kusvika 100 Kana dValues(i) = dVal Ipapo IndexVal = Ini Buda Kumagumo Kana Inotevera i

Iyo Ita Uchiri Loop muVisual Basic

Purogiramu Ita nguva inoita bhuroka rekodhi chero bedzi mamiriro akataurwa asangana. Unotevera muenzaniso wemaitiro Sub, umo kushandisa loop Ita nguva Nhamba dzeFibonacci dzisingapfuure 1000 dzinoratidzwa sequentially:

'Sub maitiro anobuda nhamba dzeFibonacci dzisingapfuure 1000 Sub Fibonacci() Dim i As Integer' counter kuratidza nzvimbo yechinhu mukutevedzana Dim iFib As Integer 'inochengetedza kukosha kwazvino kwekuteerana Dim iFib_Next As Integer' inochengeta kukosha kunotevera. yekutevedzana Dim iStep As Integer 'stores size of next increment' tanga zvinosiyana ini uye iFib_Next i = 1 iFib_Next = 0 'Ita Nepo loop ichaita kusvika kukosha kwe'zvino nhamba yeFibonacci yakakura kupfuura 1000 Ita Ipo iFib_Next <1000 Kana i = 1 Wobva wati 'special case for first element iStep = 1 iFib = 0 Zvimwe 'chengetedza saizi yekuwedzera kunotevera usati wanyora' kukosha kwazvino kwekutevedzana iStep = iFib iFib = iFib_Next End Kana 'printa nhamba yeFibonacci iripo muchikamu A che iro rinoshanda bepa rekushanda 'mumutsara une index i Masero(i, 1) .Value = iFib 'verenga nhamba inotevera yeFibonacci uye increment the element position index by 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Mumuenzaniso wakapihwa, mamiriro iFib_Next <1000 yakatariswa panotangira loop. Naizvozvo, kana kukosha kwekutanga iFib_Next Kana paine anopfuura 1000, saka loop yaisazombofa yakaurayiwa.

Imwe nzira yekushandisa loop Ita nguva - isa mamiriro acho kwete pakutanga, asi pakuguma kwechiuno. Muchiitiko ichi, loop ichaitwa kamwechete, pasinei nokuti mamiriro acho akasangana.

Schematically, kutenderera kwakadaro Ita nguva nemamiriro ekutarisa kumagumo achaita seizvi:

Ita ... Loop Ipo iFib_Next <1000

Цикл «Ita Kusvikira» в Visual Basic

Purogiramu Ita Kusvikira zvakada kufanana nekutenderera Ita nguva: iyo bhuroka yekodhi mumuviri wechiuno inoitwa kakawanda uyezve kusvikira mamiriro akataurwa asangana (mhedzisiro yechirevo chechirevo chokwadi) Munzira inotevera Sub kushandisa cycle Ita Kusvikira tora kukosha kubva kumasero ese muchikamu A pepa rebasa kusvika iyo column yasangana nesero risina chinhu:

iRow = 1 Ita Kusvikira IsEmpty(Masero(iRow, 1)) 'Kukosha kwesero iripo inochengetwa muhurongwa dCellValues ​​dCellValues(iRow) = Masero(iRow, 1).Value iRow = iRow + 1 Loop

Mumuenzaniso uri pamusoro, mamiriro acho IsEmpty(Masero(iRow, 1)) inowanikwa pakutanga kwechimiro Ita Kusvikira, saka loop ichaitwa kamwechete kana sero rekutanga rakatorwa risina chinhu.

Zvisinei, sezvinoratidzwa mumienzaniso yeloop Ita nguva, mune mamwe mamiriro ezvinhu zvakakosha kuti loop iitwe kamwechete, zvisinei nemhedzisiro yekutanga yechirevo chechirevo. Muchiitiko ichi, chirevo chechirevo chinofanira kuiswa pamagumo echiputi, seizvi:

Ita ... Loop Kusvikira IsEmpty(Masero(iRow, 1))

Leave a Reply