Loop di VBA

Aya kaayaan nalika program VBA diwajibkeun pikeun ngalakukeun set tindakan anu sami sababaraha kali sakaligus (nyaéta, ngulang blok kode anu sami sababaraha kali). Ieu tiasa dilakukeun nganggo puteran VBA.

VBA loop ngawengku:

Salajengna, urang bakal nyandak katingal ngadeukeutan di unggal siklus ieu.

Pikeun Loop Operator dina Visual Basic

Struktur operator loop nu dina Visual Basic bisa diatur dina salah sahiji dua bentuk: salaku loop a Pikeun… Salajengna atawa salaku loop a Pikeun Unggal.

Siklus "Pikeun ... Salajengna"

siklus Pikeun… Salajengna ngagunakeun variabel anu sacara sekuen nyokot nilai tina rentang anu tangtu. Kalawan unggal robah tina nilai variabel, lampah enclosed dina awak siklus anu dipigawé. Ieu gampang kahartos tina conto saderhana:

Pikeun i = 1 ka 10 Total = Total + iArray (i) salajengna i

Dina loop basajan ieu Pikeun… Salajengna variabel dipaké i, anu sacara berurutan nyandak nilai 1, 2, 3, ... 10, sareng pikeun tiap nilai ieu, kode VBA di jero loop dieksekusi. Ku kituna, loop ieu nyimpulkeun unsur-unsur array. iArray dina variabel total.

Dina conto di luhur, increment loop teu dieusian, jadi mun increment variabel i ti 1 nepi ka 10, standar mangrupa increment 1... Tapi, dina sababaraha kasus perlu ngagunakeun nilai increment béda pikeun loop. Ieu tiasa dilakukeun nganggo kecap konci Lengkahditémbongkeun saperti dina conto basajan di handap ieu.

Pikeun d = 0 Nepi ka 10 Lengkah 0.1 dTotal = dTotal + d Salajengna d

Kusabab dina conto di luhur, hambalan increment diatur sarua jeung 0.1, lajeng variabel dTotal pikeun tiap pengulangan siklus nyokot nilai 0.0, 0.1, 0.2, 0.3,... 9.9, 10.0.

Pikeun nangtukeun léngkah loop dina VBA, anjeun tiasa nganggo nilai négatip, contona, sapertos kieu:

Pikeun i = 10 Ka 1 Lengkah -1 iArray (abdi) = i salajengna i

Di dieu naékna -1, jadi variabel i kalawan unggal pengulangan siklus nyokot nilai 10, 9, 8, ... 1.

Loop "Pikeun Masing-masing"

siklus Pikeun Unggal sarupa siklus Pikeun… Salajengna, Tapi tinimbang iterating leuwih runtuyan nilai keur variabel counter, loop Pikeun Unggal ngalakukeun sakumpulan tindakan pikeun tiap obyék dina grup obyék anu ditangtukeun. Dina conto di handap ieu, ngagunakeun loop a Pikeun Unggal enumerates sadaya lambar dina workbook Excel ayeuna:

Taram wSheet Salaku Lembar Kerja Pikeun Unggal wSheet dina Lembar Kerja MsgBox "Найден лист: " & wSheet.Name Next wSheet

Pernyataan interrupt loop "Kaluar Pikeun"

petugas Kaluar Pikeun dipaké pikeun ngaganggu siklus. Pas pernyataan ieu encountered dina kode, program nu ends palaksanaan loop sarta proceeds kana palaksanaan pernyataan nu aya dina kode langsung saatos loop ieu. Ieu tiasa dianggo, contona, pikeun milarian nilai khusus dina susunan. Jang ngalampahkeun ieu, ngagunakeun loop a, unggal unsur Asép Sunandar Sunarya discan. Pas unsur diperlukeun geus kapanggih, teu kudu néangan ngaliwatan sésana - siklus ieu interrupted.

Aplikasi operator Kaluar Pikeun ditémbongkeun dina conto di handap ieu. Di dieu loop iterates leuwih 100 éntri Asép Sunandar Sunarya sarta compares unggal kalawan nilai variabel dVal... Lamun hiji patandingan kapanggih, teras loop anu terminated:

Pikeun i = 1 Nepi ka 100 Lamun dValues(i) = dVal Lajeng IndexVal = i Kaluar Pikeun Tungtung Lamun salajengna i

The Do While Loop dina Visual Basic

siklus Ngalakukeun bari executes blok kode salami kaayaan dieusian geus patepung. Di handap ieu conto prosedur sub, nu ngagunakeun loop Ngalakukeun bari Angka Fibonacci henteu langkung ti 1000 ditampilkeun sacara berurutan:

'Sub prosedur kaluaran angka Fibonacci teu ngaleuwihan 1000 Sub Fibonacci () Taram i Salaku Integer' counter pikeun nunjukkeun posisi unsur dina runtuyan Taram iFib Salaku Integer 'nyimpen nilai ayeuna tina runtuyan Taram iFib_Next Salaku Integer 'nyimpen nilai salajengna tina sekuen Taram iStep Salaku Integer 'nyimpen ukuran increment salajengna' initialize variabel i jeung iFib_Next i = 1 iFib_Next = 0 'Do Sedengkeun loop bakal ngaéksekusi nepi ka nilai 'angka Fibonacci ayeuna leuwih gede ti 1000 Do Sedengkeun iFib_Next <1000 Lamun i = 1 Lajeng 'kasus husus pikeun unsur kahiji iStep = 1 iFib = 0 Lain 'nyimpen ukuran increment salajengna saméméh overwriting' nilai ayeuna runtuyan iStep = iFib iFib = iFib_Next End Lamun 'nyitak angka Fibonacci ayeuna dina kolom A tina lembar kerja aktip 'dina baris kalayan indéks i Sél (i, 1).Nilai = iFib 'itung angka Fibonacci hareup jeung increment indéks posisi unsur ku 1 iFib_Next = iFib + iStep i = i + 1 Loop Tungtung Sub

Dina conto anu dipasihkeun, kaayaan iFib_Next < 1000 dipariksa di awal loop. Ku alatan éta, lamun nilai munggaran iFib_Next Upami aya langkung ti 1000, maka loop moal pernah dieksekusi.

Cara séjén pikeun nerapkeun loop a Ngalakukeun bari - nempatkeun kaayaan teu di awal, tapi di ahir loop. Dina hal ieu, loop bakal dieksekusi sahenteuna sakali, paduli naha kaayaan geus patepung.

Schematically, siklus sapertos Ngalakukeun bari kalayan kaayaan anu bakal dipariksa dina tungtungna bakal katingali sapertos kieu:

Ulah ... Loop Sedengkeun iFib_Next < 1000

Dina Visual Basic

siklus Ngalakukeun Nepi sarupa pisan jeung siklus Ngalakukeun bari: blok kode dina awak loop dieksekusi deui-deui nepi ka kaayaan nu ditangtukeun geus patepung (hasil ekspresi kondisional nyaeta leres). Dina prosedur salajengna sub ngagunakeun siklus Ngalakukeun Nepi nimba nilai tina sadaya sél dina kolom A lembar kerja dugi ka kolom mendakan sél kosong:

iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) 'Nilai sél ayeuna disimpen dina array dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Nilai iRow = iRow + 1 Loop

Dina conto di luhur, kaayaan Kosong(Sél(iRow, 1)) lokasina di awal wangunan Ngalakukeun Nepi, jadi loop bakal dieksekusi sahenteuna sakali lamun sél munggaran dicokot teu kosong.

Sanajan kitu, sakumaha ditémbongkeun dina conto loop Ngalakukeun bari, dina sababaraha kaayaan perlu yén loop dieksekusi sahenteuna sakali, paduli hasil awal ekspresi kondisional. Dina hal ieu, ekspresi kondisional kudu ditempatkeun di tungtung loop, kawas kieu:

Lakukeun ... Loop Nepi ka Kosong(Sél(iRow, 1))

Leave a Reply