Ama-loops ku-VBA

Kunezimo lapho uhlelo lwe-VBA ludingeka ukwenza isethi efanayo yezenzo izikhathi eziningana zilandelana (okungukuthi, ukuphinda ibhulokhi efanayo yekhodi izikhathi eziningana). Lokhu kungenziwa kusetshenziswa izihibe ze-VBA.

I-VBA loops ihlanganisa:

Okulandelayo, sizobhekisisa ngamunye wale mijikelezo.

Okwe-Loop Operator ku-Visual Basic

Isakhiwo se-loop operator The ku-Visual Basic ingahlelwa ngendlela eyodwa kwezimbili: njengeluphu Okwe… Okulandelayo noma njengeluphu Ukuze Ngamunye.

Umjikelezo “Okwe… Okulandelayo”

Umjikelezo Okwe… Okulandelayo isebenzisa okuhlukile okuthatha amanani ngokulandelanayo ebangeni elinikeziwe. Ngoshintsho ngalunye lwenani lokuguquguquka, izenzo ezifakwe emzimbeni womjikelezo ziyenziwa. Lokhu kulula ukukuqonda esibonelweni esilula:

Ngokuba i = 1 kuya ku-10 Isamba = Isamba + iArray(i) Okulandelayo i

Kule loop elula Okwe… Okulandelayo i-variable isetshenziswa i, ethatha amanani ngokulandelana 1, 2, 3, ... 10, futhi kumanani ngamunye kulawa, ikhodi ye-VBA engaphakathi kweluphu iyasetshenziswa. Ngakho, le loop ihlanganisa izakhi zamalungu afanayo. iArray ekuguquguqukeni Ubude.

Esibonelweni esingenhla, ukukhuphuka kweluphu akucacisiwe, ngakho-ke ukukhulisa okuguquguqukayo i ukusuka ku-1 kuye ku-10, okuzenzakalelayo kuwukunyuka 1... Kodwa-ke, kwezinye izimo kuyadingeka ukuthi usebenzise amanani ahlukile wokukhuphuka ku-loop. Lokhu kungenziwa ngokusebenzisa igama elingukhiye Isinyathelonjengoba kukhonjisiwe kulesi sibonelo esilula esilandelayo.

Ku-d = 0 ukuya ku-10 Isinyathelo 0.1 dTotal = dTotal + d Okulandelayo d

Njengoba kulesi sibonelo esingenhla, isinyathelo sokukhuphuka sisethwe salingana ne 0.1, bese kuba okuguquguqukayo dIngqikithi ukuphindaphinda ngakunye komjikelezo kuthatha amanani 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Ukuze unqume isinyathelo se-loop ku-VBA, ungasebenzisa inani elingalungile, isibonelo, njengalokhu:

Ngokuba i = 10 ukuya ku-1 Isinyathelo -1 iArray(i) = i Okulandelayo i

Nakhu ukukhuphuka -1, ngakho-ke okuguquguqukayo i ngokuphindaphinda ngakunye komjikelezo kuthatha amanani 10, 9, 8, ... 1.

Iluphu "Yomunye nomunye"

Umjikelezo Ukuze Ngamunye efana nomjikelezo Okwe… Okulandelayo, kodwa esikhundleni sokuphindaphinda ngokulandelana kwamanani we-counter variable, iluphu Ukuze Ngamunye yenza isethi yezenzo entweni ngayinye eqenjini elishiwo lezinto. Esibonelweni esilandelayo, sebenzisa iluphu Ukuze Ngamunye ibala wonke amashidi encwadini yokusebenzela ye-Excel yamanje:

Fiphalisa Ishidi Njengeshidi Lokusebenzela Ngephepha Lokusebenza Ngalinye I-MsgBox "Найден лист: " & wSheet.Name Iphepha Elilandelayo

Isitatimende sokuphazamiseka kwe-Loop "Phuma Nge-"

I-Operator Phuma kokuthi esetshenziselwa ukuphazamisa umjikelezo. Ngokushesha nje lapho lesi sitatimende sihlangabezana nekhodi, uhlelo luqeda ukwenziwa kwe-loop futhi luqhubekela ekwenzeni izitatimende ezisekhodini ngokushesha ngemva kwale loop. Lokhu kungasetshenziswa, isibonelo, ukucinga ivelu ethile kumalungu afanayo. Ukuze wenze lokhu, usebenzisa iluphu, isici ngasinye samalungu siyaskenwa. Ngokushesha lapho isici esidingekayo sitholakala, asikho isidingo sokubheka okunye - umjikelezo uphazamisekile.

Uhlelo lokusebenza lwe-opharetha Phuma kokuthi kuboniswe esibonelweni esilandelayo. Lapha iluphu iphindaphinda okufakiwe kwamalungu afanayo angaphezu kuka-100 futhi iqhathanisa ngayinye nenani lokuguquguquka I-dVal… Uma okufanayo kutholwa, iluphu iyanqanyulwa:

Ku-i = 1 Kuya ku-100 Uma dValues(i) = dVal Bese I-IndexVal = Ngiphumela Ukuphela Uma Okulandelayo i

I-Do While Loop in Visual Basic

Umjikelezo Yenza ngenkathi yenza ibhulokhi yekhodi inqobo nje uma umbandela oshiwo ufinyelelwe. Okulandelayo isibonelo senqubo Okungaphansi, lapho kusetshenziswa iluphu Yenza ngenkathi Izinombolo ze-Fibonacci ezingadluli ku-1000 ziboniswa ngokulandelana:

'Inqubo ephansi yokuphuma kwezinombolo ze-Fibonacci ezingadluli ku-1000 Sub Fibonacci() Dim i As Integer 'counter ukukhombisa indawo ye-elementi ngokulandelana kwe-Dim iFib Njengoba i-Integer 'igcina inani lamanje lokulandelana Dim iFib_Next As Integer 'igcina inani elilandelayo yokulandelana kwe-Dim iStep As Integer 'usayizi wezitolo wokukhuphuka okulandelayo 'qalisa okuguquguqukayo i kanye ne-iFib_Next i = 1 iFib_Next = 0 'Do While iluphu izosebenza kuze kube inani 'lenombolo yeFibonacci yamanje likhulu kuno-1000 Yenza Ngenkathi iFib_Next <1000 Uma i = 1 Bese 'icala elikhethekile lesici sokuqala iStep = 1 iFib = 0 Okunye 'gcina usayizi wokunyuka okulandelayo ngaphambi kokubhala phezu 'inani lamanje lokulandelana iStep = iFib iFib = iFib_Next End Uma 'phrinta inombolo yamanje ye-Fibonacci kukholamu A ye ishidi lokusebenza elisebenzayo 'emgqeni onenkomba i Amaseli(i, 1).Value = iFib 'bala inombolo elandelayo ye-Fibonacci bese ukhuphula inkomba yendawo yesici ngo-1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Esibonelweni esinikeziwe, isimo iFib_Next <1000 kuhlolwe ekuqaleni kweluphu. Ngakho-ke, uma inani lokuqala iFib_Okulandelayo Ukube bekungaphezu kuka-1000, iluphu ibingeke isetshenziswe.

Enye indlela yokwenza iluphu Yenza ngenkathi - beka isimo hhayi ekuqaleni, kodwa ekupheleni kweluphu. Kulesi simo, iluphu izosetshenziswa okungenani kanye, kungakhathaliseki ukuthi isimo sihlangatsheziwe.

Ngokohlelo, umjikelezo onjalo Yenza ngenkathi nesimo esizohlolwa ekugcineni sizobukeka kanje:

Yenza ... Loop Ngenkathi iFib_Next <1000

Цикл "Yenza Kuze kube" ku-Visual Basic

Umjikelezo Yenza Kuze ifana kakhulu nomjikelezo Yenza ngenkathi: ibhulokhi yekhodi emzimbeni weluphu yenziwa kaninginingi kuze kube kuhlangatshezwana nesimo esishiwo (umphumela wenkulumo enemibandela ithi Yiqiniso). Enqubweni elandelayo Okungaphansi usebenzisa umjikelezo Yenza Kuze buyisa amanani kuwo wonke amaseli kukholamu A ishidi lokusebenza kuze kube ikholomu ihlangana neseli elingenalutho:

iRow = 1 Yenza Kuze IsEmpty(Amaseli(iRow, 1)) 'Inani leseli yamanje ligcinwe kuhlelo dCellValues ​​dCellValues(iRow) = Amaseli(iRow, 1).Value iRow = iRow + 1 Loop

Esibonelweni esingenhla, isimo Ayinalutho(Amaseli(iRow, 1)) etholakala ekuqaleni kwesakhiwo Yenza Kuze, ngakho-ke iluphu izosetshenziswa okungenani kanye uma iseli lokuqala elithathiwe lingenalutho.

Nokho, njengoba kuboniswe ezibonelweni ze-loop Yenza ngenkathi, kwezinye izimo kuyadingeka ukuthi iluphu isetshenziswe okungenani kanye, kungakhathaliseki ukuthi yimuphi umphumela wokuqala wenkulumo enemibandela. Kulokhu, inkulumo enemibandela kufanele ibekwe ekugcineni kweluphu, kanje:

Yenza ... Loop Kuze Kungabi Nalutho(Amaseli(iRow, 1))

shiya impendulo