Loop ing VBA

Ana kahanan nalika program VBA dibutuhake kanggo nindakake pesawat padha tumindak kaping pirang-pirang saurutan (yaiku, mbaleni blok kode sing padha kaping pirang-pirang). Iki bisa rampung nggunakake puteran VBA.

VBA loops kalebu:

Sabanjure, kita bakal nliti saben siklus kasebut.

Kanggo Operator Loop ing Visual Basic

Struktur operator loop The ing Visual Basic bisa diatur ing salah siji saka rong wangun: minangka daur ulang Kanggo… Sabanjure utawa minangka loop Kanggo Saben.

Siklus "Kanggo ... Sabanjure"

Sepeda; Pit; ontel Kanggo… Sabanjure nggunakake variabel sing kanthi urutan njupuk nilai saka sawetara tartamtu. Kanthi saben owah-owahan saka nilai variabel, tumindak sing dilampirake ing awak siklus ditindakake. Iki gampang dingerteni saka conto prasaja:

Kanggo i = 1 Kanggo 10 Total = Total + iArray(i) Sabanjure i

Ing loop prasaja iki Kanggo… Sabanjure variabel digunakake i, sing kanthi urutan njupuk nilai 1, 2, 3, ... 10, lan kanggo saben nilai kasebut, kode VBA ing daur ulang dieksekusi. Mangkono, loop iki nyimpulake unsur-unsur array. iArray ing variabel Total.

Ing conto ing ndhuwur, tambahan loop ora ditemtokake, supaya nambah variabel i saka 1 kanggo 10, standar minangka tambahan 1... Nanging, ing sawetara kasus, sampeyan kudu nggunakake nilai tambahan sing beda kanggo loop. Iki bisa ditindakake kanthi nggunakake tembung kunci Langkahminangka ditampilake ing conto prasaja ing ngisor iki.

Kanggo d = 0 Kanggo 10 Langkah 0.1 dTotal = dTotal + d Sabanjure d

Wiwit ing conto ing ndhuwur, langkah tambahan disetel padha karo 0.1, banjur variabel dTotal kanggo saben pengulangan siklus njupuk nilai 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Kanggo nemtokake langkah loop ing VBA, sampeyan bisa nggunakake nilai negatif, contone, kaya iki:

Kanggo i = 10 Kanggo 1 Langkah -1 iArray (i) = i Sabanjure i

Ing kene mundhak -1, dadi variabel i kanthi saben pengulangan siklus njupuk nilai 10, 9, 8, ... 1.

Loop "Kanggo Saben"

Sepeda; Pit; ontel Kanggo Saben padha karo siklus Kanggo… Sabanjure, nanging tinimbang ngulang urutan nilai kanggo variabel counter, loop Kanggo Saben nindakake sakumpulan tumindak kanggo saben obyek ing klompok obyek tartamtu. Ing conto ing ngisor iki, nggunakake loop Kanggo Saben enumerates kabeh sheets ing workbook Excel saiki:

Dim wSheet Minangka Lembar Kerja Kanggo Saben wSheet ing Lembar Kerja MsgBox "Kanggo Jeneng: " & wSheet.Name Sabanjure wSheet

Pernyataan interrupt loop "Metu Kanggo"

Operator Metu Kanggo digunakake kanggo ngganggu siklus. Sanalika statement iki ditemoni ing kode, program mungkasi eksekusi loop lan nerusake eksekusi pernyataan sing ana ing kode kasebut langsung sawise loop iki. Iki bisa digunakake, contone, kanggo nggoleki nilai tartamtu ing array. Kanggo nindakake iki, nggunakake daur ulang, saben unsur array dipindai. Sanalika unsur sing dibutuhake ditemokake, ora perlu nggoleki liyane - siklus kasebut diselani.

Aplikasi operator Metu Kanggo dituduhake ing conto ing ngisor iki. Ing kene daur ulang ngulang luwih saka 100 entri array lan mbandhingake saben karo nilai variabel dVal... Yen cocog ditemokake, loop bakal diakhiri:

Kanggo i = 1 Kanggo 100 Yen dValues(i) = dVal Banjur IndexVal = i Metu Kanggo End Yen Sabanjure i

Do While Loop ing Visual Basic

Sepeda; Pit; ontel Apa nalika nglakokaké blok kode anggere kondisi sing ditemtokake wis ketemu. Ing ngisor iki minangka conto prosedur sub, kang nggunakake loop Apa nalika Nomer Fibonacci ora ngluwihi 1000 ditampilake kanthi urutan:

'Sub prosedur ngasilake nomer Fibonacci ora ngluwihi 1000 Sub Fibonacci () Dim i Minangka Integer 'counter kanggo nunjukaké posisi unsur ing urutan Dim iFib Minangka Integer 'nyimpen nilai saiki urutan Dim iFib_Next Minangka Integer 'nyimpen nilai sabanjuré saka urutan Dim iStep Minangka Integer 'nyimpen ukuran increment sabanjuré' miwiti variabel i lan iFib_Next i = 1 iFib_Next = 0 'Do While loop bakal dieksekusi nganti nilai 'nomer Fibonacci saiki luwih saka 1000 Do While iFib_Next <1000 Yen i = 1 Banjur 'kasus khusus kanggo unsur pisanan iStep = 1 iFib = 0 Liyane 'nyimpen ukuran tambahan sabanjure sadurunge nimpa 'nilai saiki saka urutan iStep = iFib iFib = iFib_Next End Yen 'nyetak nomer Fibonacci saiki ing kolom A saka lembar kerja aktif 'ing baris kanthi indeks i Sel(i, 1).Nilai = iFib 'ngetung nomer Fibonacci sabanjure lan nambah indeks posisi unsur kanthi 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Ing conto sing diwenehake, kondisi kasebut iFib_Next < 1000 dicenthang ing wiwitan daur ulang. Mulane, yen nilai pisanan iFib_Next Yen ana luwih saka 1000, mula loop kasebut ora bakal ditindakake.

Cara liya kanggo ngleksanakake loop Apa nalika - nyeleh kondisi ora ing wiwitan, nanging ing pungkasan daur ulang. Ing kasus iki, daur ulang bakal kaleksanan ing paling sapisan, preduli saka apa kondisi ketemu.

Secara skematis, siklus kasebut Apa nalika kanthi kondisi sing bakal dipriksa ing pungkasan bakal katon kaya iki:

Apa ... Loop Nalika iFib_Next < 1000

Pilih "Do Nganti" ing Visual Basic

Sepeda; Pit; ontel Gawe nganti meh padha karo siklus Apa nalika: blok kode ing awak loop dieksekusi bola-bali nganti kondisi sing ditemtokake (asil ekspresi kondisional yaiku True). Ing prosedur sabanjure sub nggunakake siklus Gawe nganti njupuk nilai saka kabeh sel ing kolom A lembar kerja nganti kolom nemokake sel kosong:

iRow = 1 Do Nganti IsEmpty(Cells(iRow, 1)) 'Nilai sel saiki disimpen ing array dCellValues ​​​​dCellValues(iRow) = Sel(iRow, 1).Nilai iRow = iRow + 1 Loop

Ing conto ing ndhuwur, kondisi IsEmpty(Sel(iRow, 1)) dumunung ing wiwitan struktur Gawe nganti, dadi loop bakal dieksekusi paling ora sapisan yen sel pisanan sing dijupuk ora kosong.

Nanging, kaya sing ditampilake ing conto loop Apa nalika, ing sawetara kahanan, loop kudu dieksekusi paling ora sapisan, preduli saka asil awal ekspresi kondisional. Ing kasus iki, ekspresi kondisional kudu diselehake ing mburi daur ulang, kaya mangkene:

Apa ... Loop Nganti IsEmpty(Sel(iRow, 1))

Ninggalake a Reply