Loops hauv VBA

Muaj cov xwm txheej thaum VBA qhov kev pab cuam yuav tsum tau ua tib yam txheej txheem ua ob peb zaug hauv kab (uas yog, rov ua tib qhov thaiv ntawm code ob peb zaug). Qhov no tuaj yeem ua tiav siv VBA loops.

VBA loops muaj xws li:

Tom ntej no, peb yuav ua tib zoo saib ntawm txhua qhov ntawm cov voj voog no.

Rau Loop Operator hauv Visual Basic

Cov qauv ntawm tus neeg teb xov tooj loop cov hauv Visual Basic tuaj yeem teeb tsa hauv ib qho ntawm ob daim ntawv: ua lub voj Rau… Tom ntej los yog raws li lub voj Rau Txhua.

Lub voj voog "Rau ... Tom ntej"

Kev voj voog Rau… Tom ntej siv qhov sib txawv uas ua raws li cov txiaj ntsig los ntawm qhov muab ntau yam. Nrog rau txhua qhov kev hloov pauv ntawm tus nqi ntawm qhov sib txawv, cov kev ua nyob rau hauv lub cev ntawm lub voj voog yog ua. Qhov no yooj yim to taub los ntawm ib qho piv txwv yooj yim:

Rau i = 1 To 10 Total = Total + iArray(i) Next i

Nyob rau hauv qhov yooj yim voj Rau… Tom ntej sib txawv yog siv i, uas sequentially siv qhov tseem ceeb 1, 2, 3, … 10, thiab rau txhua qhov ntawm cov txiaj ntsig no, VBA code hauv lub voj raug tua. Yog li, lub voj no suav cov ntsiab lus ntawm cov array. iArray nyob rau hauv variable Tag nrho cov.

Hauv qhov piv txwv saum toj no, lub voj increment tsis tau teev tseg, yog li txhawm rau nce qhov sib txawv i Los ntawm 1 txog 10, lub neej ntawd yog qhov nce ntxiv 1… Txawm li cas los xij, qee zaum nws yuav tsum siv qhov sib txawv increment qhov tseem ceeb rau lub voj. Qhov no tuaj yeem ua tiav siv lo lus tseem ceeb Kauj ruamraws li qhia hauv cov piv txwv yooj yooj yim hauv qab no.

Rau d = 0 txog 10 Kauj Ruam 0.1 dTotal = dTotal + d Next d

Txij li hauv qhov piv txwv saum toj no, cov kauj ruam nce ntxiv yog teem sib npaug 0.1, ces qhov sib txawv dTotal rau txhua qhov rov ua dua ntawm lub voj voog yuav siv sij hawm ntawm qhov tseem ceeb 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Txhawm rau txiav txim siab lub voj kauj ruam hauv VBA, koj tuaj yeem siv tus nqi tsis zoo, piv txwv li, zoo li no:

Rau i = 10 Rau 1 Kauj Ruam -1 iArray(i) = i Next i

Nov yog qhov nce ntxiv -1, yog li qhov sib txawv i nrog txhua qhov rov ua dua ntawm lub voj voog yuav siv sij hawm ntawm qhov tseem ceeb 10, 9, 8, … 1.

Loop "Rau Txhua"

Kev voj voog Rau Txhua zoo ib yam li lub voj voog Rau… Tom ntej, tab sis es tsis txhob iterating tshaj qhov sib lawv liag ntawm qhov tseem ceeb rau lub txee variable, lub voj Rau Txhua ua ib txheej ntawm kev ua rau txhua yam khoom nyob rau hauv ib pawg ntawm cov khoom. Hauv qhov piv txwv hauv qab no, siv lub voj Rau Txhua enumerates tag nrho cov nplooj ntawv hauv Excel tam sim no workbook:

Dim wSheet As Worksheet For Txhua wSheet hauv Worksheets MsgBox "Найден лист:" & wSheet.Npe Tom ntej wSheet

Loop interrupt nqe lus "Tawm rau"

Tus neeg teb xov tooj Tawm rau siv los cuam tshuam lub voj voog. Sai li qhov nqe lus no tau ntsib nyob rau hauv cov cai, qhov kev zov me nyuam xaus qhov kev ua tiav ntawm lub voj thiab mus rau kev ua tiav ntawm cov nqe lus uas nyob rau hauv cov cai tam sim tom qab lub voj no. Qhov no tuaj yeem siv, piv txwv li, txhawm rau tshawb nrhiav tus nqi tshwj xeeb hauv ib qho array. Txhawm rau ua qhov no, siv lub voj, txhua lub ntsiab lus ntawm cov array raug luam. Thaum pom cov ntsiab lus xav tau, tsis tas yuav saib mus rau lwm qhov - lub voj voog raug cuam tshuam.

Daim ntawv thov tus neeg teb xov tooj Tawm rau ua qauv qhia hauv qab no. Ntawm no lub voj iterates tshaj 100 array nkag thiab sib piv txhua tus nrog tus nqi ntawm qhov sib txawv dVal ua… Yog tias pom qhov sib tw, ces lub voj yuav raug txiav:

Rau kuv = 1 txog 100 Yog tias dValues(i) = dVal Ces IndexVal = i Tawm Rau Kawg Yog Tom Qab Kuv

Ua Thaum Loop hauv Visual Basic

Kev voj voog Ua thaum executes ib qho thaiv ntawm code ntev npaum li qhov xwm txheej tau ua tiav. Hauv qab no yog ib qho piv txwv ntawm tus txheej txheem sub, uas siv lub voj Ua thaum Fibonacci tus lej tsis pub tshaj 1000 tau tshwm sim ua ntu zus:

'Sub txheej txheem outputs Fibonacci tooj tsis tshaj 1000 Sub Fibonacci() Dim i As Integer 'counter los qhia txoj hauj lwm ntawm lub caij nyob rau hauv lub sequence Dim iFib Raws li Integer ' khaws cov nqi tam sim no ntawm cov sequence Dim iFib_Next As Integer ' khaws cov nqi tom ntej ntawm qhov sib lawv liag Dim iStep As Integer 'kho qhov loj ntawm qhov nce ntxiv 'initialize variables i thiab iFib_Next i = 1 iFib_Next = 0 'Ua Thaum lub voj yuav ua tiav kom txog thaum tus nqi ntawm 'Fibonacci tus lej tam sim no ntau dua 1000 Ua Thaum iFib_Next < Yog tias 1000 Ces 'cov ntaub ntawv tshwj xeeb rau thawj lub caij iStep = 1 iFib = 1 Lwm yam 'txuag qhov loj ntawm qhov nce ntxiv ua ntej overwriting 'tus nqi tam sim no ntawm ntu iStep = iFib iFib = iFib_Next Xaus Yog tias ' luam cov Fibonacci tus lej tam sim no hauv kab A ntawm daim ntawv ua haujlwm 'nyob rau hauv kab nrog index i Cells(i , 0).Value = iFib 'xav tus lej Fibonacci tom ntej thiab nce lub ntsiab txoj hauj lwm Performance index los ntawm 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Hauv qhov piv txwv, qhov xwm txheej iFib_Next < 1000 txheeb xyuas thaum pib ntawm lub voj. Yog li ntawd, yog thawj tus nqi iFib_Next Yog tias muaj ntau tshaj 1000, ces lub voj yuav tsis raug tua.

Lwm txoj hauv kev los siv lub voj Ua thaum - Muab qhov xwm txheej tsis yog thaum pib, tab sis thaum kawg ntawm lub voj voog. Hauv qhov no, lub voj yuav raug tua tsawg kawg ib zaug, tsis hais seb qhov xwm txheej puas tau ntsib.

Schematically, xws li lub voj voog Ua thaum nrog rau cov xwm txheej yuav tsum tau kuaj xyuas thaum kawg yuav zoo li no:

Ua ... Loop Thaum iFib_Next < 1000

Nyem "Ua Kom Txog" ntawm Visual Basic

Kev voj voog Ua kom txog thaum zoo ib yam li lub voj voog Ua thaum: qhov thaiv ntawm code nyob rau hauv lub cev ntawm lub voj yog raug tua dua thiab ntau dua kom txog rau thaum lub sij hawm teem tseg (qhov tshwm sim ntawm lub conditional qhia yog muaj tseeb). Hauv cov txheej txheem tom ntej sub siv lub voj voog Ua kom txog thaum retrieve qhov tseem ceeb ntawm txhua lub hlwb hauv ib kab A daim ntawv ua haujlwm kom txog rau thaum kem ntsib ib lub xov tooj khoob:

iRow = 1 Ua Kom txog thaum IsEmpty(Cells(iRow, 1)) 'Tus nqi ntawm cov xov tooj tam sim no yog khaws cia rau hauv cov array dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

Hauv qhov piv txwv saum toj no, qhov xwm txheej IsEmpty(Cells(iRow, 1)) nyob rau ntawm qhov pib ntawm cov qauv Ua kom txog thaum, yog li lub voj yuav raug tua tsawg kawg ib zaug yog tias thawj lub xov tooj ntawm tes tsis yog khoob.

Txawm li cas los xij, raws li qhia hauv cov piv txwv voj Ua thaum, hauv qee qhov xwm txheej nws yog qhov tsim nyog uas lub voj yuav raug tua tsawg kawg ib zaug, tsis hais qhov tshwm sim thawj zaug ntawm cov lus qhia. Nyob rau hauv cov ntaub ntawv no, lub conditional qhia yuav tsum tau muab tso rau ntawm qhov kawg ntawm lub voj, zoo li no:

Ua ... Loop Kom txog rau thaum tsis muaj (Cells(iRow, 1))

Sau ntawv cia Ncua