Hiverina any amin'ny VBA

Misy toe-javatra izay mitaky fandaharana VBA mba hanatanteraka andiana hetsika imbetsaka misesy (izany hoe, avereno imbetsaka ny andian-kaody mitovy). Izany dia azo atao amin'ny fampiasana VBA loops.

Ny loop VBA dia misy:

Manaraka izany dia hojerentsika akaiky ny tsirairay amin'ireo tsingerina ireo.

Ho an'ny Loop Operator amin'ny Visual Basic

Ny firafitry ny loop operator The amin'ny Visual Basic dia azo alamina amin'ny endrika roa: toy ny loop Ho an'ny… Manaraka na toy ny tadivavarana Isaky ny.

Tsikelikely "Ho an'ny ... Manaraka"

tsingerin'ny Ho an'ny… Manaraka mampiasa faribolana izay maka soatoavina avy amin'ny faritra iray. Isaky ny fiovan'ny sandan'ny varimbazaha dia atao ny hetsika ao anatin'ny vatan'ny tsingerina. Mora azo avy amin'ny ohatra tsotra izany:

Ho an'ny i = 1 hatramin'ny 10 Total = Total + iArray(i) Manaraka i

Amin'ity loop tsotra ity Ho an'ny… Manaraka variable no ampiasaina i, izay maka ny soatoavina 1, 2, 3, … 10, ary ho an'ny tsirairay amin'ireo soatoavina ireo, ny kaody VBA ao anatin'ny loop dia tanterahina. Noho izany, ity loop ity dia mamintina ireo singa ao amin'ny array. iArray in variable Total.

Ao amin'ny ohatra etsy ambony, ny fampitomboana ny loop dia tsy voafaritra, mba hampitombo ny fari-piainana i manomboka amin'ny 1 ka hatramin'ny 10, ny default dia fitomboana 1… Na izany aza, amin'ny toe-javatra sasany dia ilaina ny mampiasa soatoavina fampiakarana samihafa ho an'ny loop. Izany dia azo atao amin'ny fampiasana ny teny fanalahidy dinganaaraka ny asehon’ity ohatra tsotra ity.

Ho an'ny d = 0 hatramin'ny dingana 10 0.1 dTotal = dTotal + d Manaraka d

Satria amin'ny ohatra etsy ambony, ny dingana increment dia apetraka mitovy amin'ny 0.1, avy eo ny variable dTotal isaky ny famerimberenana ny tsingerina dia mandray ny sanda 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Mba hamaritana ny dingana loop ao amin'ny VBA, azonao atao ny mampiasa sanda ratsy, ohatra, toy izao:

Fa i = 10 To 1 Dingana -1 iArray(i) = i Manaraka i

Eto ny increment -1, ka ny variable i isaky ny famerimberenana ny tsingerina dia mandray ny soatoavina 10, 9, 8, … 1.

Loop "Ho an'ny tsirairay"

tsingerin'ny Isaky ny mitovy amin'ny tsingerina Ho an'ny… Manaraka, fa raha tokony hiverina amin'ny filaharan'ny soatoavina ho an'ny fari-piadidiana mifanohitra, dia ny loop Isaky ny manatanteraka andiana hetsika ho an'ny zavatra tsirairay ao amin'ny vondron'ny zavatra voafaritra. Amin'ity ohatra manaraka ity, mampiasa loop Isaky ny mitanisa ny takelaka rehetra ao amin'ny bokin'ny Excel amin'izao fotoana izao:

Atsaharo ny wSheet ho toy ny Worksheet ho an'ny wSheet tsirairay ao amin'ny Worksheets MsgBox "Tsy misy anarana: " & wSheet.Name Next wSheet

Fanambarana fanelanelanana miverimberina "Mivoaha ho"

mpandraharaha Hivoaka ho an'ny ampiasaina hanapaka ny tsingerina. Raha vantany vao hita ao amin'ny fehezan-dalàna io fanambarana io, ny programa dia mamarana ny fanatanterahana ny loop ary miroso amin'ny fanatanterahana ireo fanambarana izay ao amin'ny fehezan-dalàna avy hatrany aorian'ity loop ity. Ity dia azo ampiasaina, ohatra, mba hitadiavana sanda manokana amin'ny array. Mba hanaovana izany, mampiasa loop iray, ny singa tsirairay amin'ny array dia scan. Raha vao hita ny singa ilaina dia tsy ilaina ny mijery ny ambiny - tapaka ny tsingerina.

Fampiharana operator Hivoaka ho an'ny aseho amin’ity ohatra manaraka ity. Eto ny loop dia mamerina ny fidirana array mihoatra ny 100 ary mampitaha ny tsirairay amin'ny sandan'ny variable dVal… Raha misy lalao hita, dia tapitra ny loop:

Ho an'ny i = 1 hatramin'ny 100 Raha dValues(i) = dVal Dia IndexVal = i Hivoaka amin'ny farany raha manaraka i

Ny Do While Loop amin'ny Visual Basic

tsingerin'ny Manaova fotoana manatanteraka andian-kaody raha mbola feno ny fepetra voalaza. Ity manaraka ity dia ohatra iray momba ny fomba fiasa Sub, izay mampiasa ny loop Manaova fotoana Ny isa Fibonacci tsy mihoatra ny 1000 dia aseho misesy:

'Sub procédure dia mamoaka isa Fibonacci tsy mihoatra ny 1000 Sub Fibonacci() Dim i As Integer' counter mba hanondroana ny toeran'ny singa ao amin'ny filaharana Dim iFib As Integer' dia mitahiry ny sanda ankehitriny amin'ny filaharana Dim iFib_Next As Integer 'mitahiry ny sanda manaraka amin'ny filaharana Dim iStep As Integer 'mitahiry ny haben'ny fisondrotana manaraka' manomboka ny variables i sy iFib_Next i = 1 iFib_Next = 0 'Do While loop dia hotanterahina mandra-pahatongan'ny sandan'ny' isa Fibonacci ankehitriny dia mihoatra ny 1000 Do While iFib_Next < 1000 Raha i = 1 Avy eo 'tranga manokana ho an'ny singa voalohany iStep = 1 iFib = 0 Raha tsy izany dia tehirizo ny haben'ny fisondrotana manaraka alohan'ny hanoratana ny sandan'ny filaharana ankehitriny iStep = iFib iFib = iFib_Next End Raha 'manonta ny isa Fibonacci ankehitriny ao amin'ny tsanganana A ny taratasin'asa mavitrika 'ao amin'ny laharana misy index i Cells(i , 1)

Ao amin'ny ohatra nomena, ny fepetra iFib_Next < 1000 voamarina teo am-piandohan'ny loop. Noho izany, raha ny sanda voalohany iFib_Next Raha misy mihoatra ny 1000 dia tsy ho tanteraka mihitsy ilay loop.

Fomba iray hafa hanatanterahana ny loop Manaova fotoana - apetraho tsy eo am-piandohana ny fepetra fa eo amin'ny faran'ny tadivavarana. Amin'ity tranga ity, ny loop dia hotanterahina indray mandeha, na inona na inona ny fepetra.

Schematically, tsingerina toy izany Manaova fotoana miaraka amin'ny fepetra hojerena amin'ny farany dia ho toy izao:

Ataovy ... Loop raha iFib_Next < 1000

Sary «Ataovy hatramin'ny» amin'ny Visual Basic

tsingerin'ny Ataovy hatramin'ny tena mitovy amin'ny cycle Manaova fotoana: Ny sakana kaody ao amin'ny vatan'ny tadivavarana dia tanterahina imbetsaka mandra-pahafeno ny fepetra voatondro (ny vokatry ny fanehoan-kevitra dia marina). Amin'ny dingana manaraka Sub mampiasa tsingerina Ataovy hatramin'ny maka sanda avy amin'ny sela rehetra ao anaty tsanganana A worksheet mandra-pahatongan'ny tsanganana amin'ny sela tsy misy na inona na inona:

iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) 'Ny sandan'ny sela ankehitriny dia voatahiry ao amin'ny array dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

Ao amin'ny ohatra etsy ambony, ny fepetra IsEmpty(Cells(iRow, 1)) hita eo am-piandohan'ny rafitra Ataovy hatramin'ny, noho izany dia hotanterahina indray mandeha ny tadio raha tsy foana ny sela voalohany nalaina.

Na izany aza, araka ny aseho amin'ny ohatra loop Manaova fotoana, amin'ny toe-javatra sasany dia ilaina ny manatanteraka ny loop farafahakeliny indray mandeha, na inona na inona vokatra voalohany amin'ny fehezanteny misy fepetra. Amin'ity tranga ity dia tokony hapetraka eo amin'ny faran'ny loop ny fanehoan-kevitra misy fepetra, toy izao:

Ataovy ... Loop hatramin'ny Foana(Cells(iRow, 1))

Leave a Reply