Awọn iyipo ni VBA

Awọn ipo wa nigbati eto VBA kan nilo lati ṣe eto awọn iṣe kanna ni ọpọlọpọ igba ni ọna kan (iyẹn, tun bulọki koodu kanna ni ọpọlọpọ igba). Eyi le ṣee ṣe nipa lilo awọn losiwajulosehin VBA.

Awọn iyipo VBA pẹlu:

Nigbamii, a yoo ṣe akiyesi diẹ sii ni ọkọọkan awọn iyipo wọnyi.

Fun Loop onišẹ ni Ipilẹ wiwo

Ilana ti oniṣẹ lupu awọn ni Visual Basic le ṣeto ni ọkan ninu awọn fọọmu meji: bi lupu Fun… Next tabi bi a lupu Fun Kọọkan.

Yiyipo “Fun… Next”

Ọmọ Fun… Next nlo oniyipada kan ti o gba awọn iye lẹsẹsẹ lati sakani ti a fun. Pẹlu iyipada kọọkan ti iye ti oniyipada, awọn iṣe ti o wa ninu ara ti ọmọ naa ni a ṣe. Eyi rọrun lati ni oye lati apẹẹrẹ ti o rọrun:

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

Ni yi o rọrun lupu Fun… Next oniyipada ti lo i, eyiti o gba awọn iye lẹsẹsẹ 1, 2, 3, … 10, ati fun ọkọọkan awọn iye wọnyi, koodu VBA inu lupu ti wa ni ṣiṣe. Nitorinaa, lupu yii ṣe akopọ awọn eroja ti titobi naa. iArray ni oniyipada Total.

Ninu apẹẹrẹ ti o wa loke, a ko ṣe iyasọtọ lupu, nitorinaa lati mu ki oniyipada pọ si i lati 1 to 10, aiyipada jẹ ẹya afikun 1Sibẹsibẹ, ni awọn igba miiran o jẹ dandan lati lo awọn iye afikun oriṣiriṣi fun lupu naa. Eyi le ṣee ṣe nipa lilo ọrọ-ọrọ Igbesebi han ninu awọn wọnyi o rọrun apẹẹrẹ.

Fun d = 0 Si 10 Igbesẹ 0.1 dTotal = dTotal + d Next d

Niwon ninu apẹẹrẹ ti o wa loke, igbesẹ afikun ti ṣeto dogba si 0.1, lẹhinna oniyipada dTotal fun atunwi kọọkan ti ọmọ gba lori awọn iye 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Lati pinnu igbesẹ lupu ni VBA, o le lo iye odi, fun apẹẹrẹ, bii eyi:

Fun i = 10 Si 1 Igbese -1 iArray (i) = i Next i

Eyi ni afikun -1, ki oniyipada i pẹlu atunwi kọọkan ti iyipo gba lori awọn iye 10, 9, 8,… 1.

Loop "Fun Ọkọọkan"

Ọmọ Fun Kọọkan iru si a ọmọ Fun… Next, ṣugbọn dipo aṣetunṣe lori ọna ti awọn iye fun oniyipada counter, lupu naa Fun Kọọkan ṣe eto awọn iṣe fun ohun kọọkan ninu ẹgbẹ awọn ohun kan pato. Ni apẹẹrẹ atẹle, lilo lupu kan Fun Kọọkan ṣe apejuwe gbogbo awọn iwe inu iwe iṣẹ Excel lọwọlọwọ:

Dim wSheet Bi Iwe iṣẹ-ṣiṣe Fun kọọkan wSheet ni Awọn iṣẹ-ṣiṣe MsgBox "Найден лист:" & wSheet.Name Next wSheet

Gbólóhùn dídílọ́gi “Jade Fun”

onišẹ Jade Fun lo lati da gbigbi awọn ọmọ. Ni kete ti alaye yii ba pade ninu koodu naa, eto naa dopin ipaniyan ti lupu ati tẹsiwaju si ipaniyan awọn alaye ti o wa ninu koodu lẹsẹkẹsẹ lẹhin lupu yii. Eyi le ṣee lo, fun apẹẹrẹ, lati wa iye kan pato ninu akojọpọ. Lati ṣe eyi, ni lilo lupu kan, ipin kọọkan ti orun ti ṣayẹwo. Ni kete ti a ba rii nkan ti o nilo, ko si iwulo lati wo nipasẹ iyokù - ọmọ naa ti ni idilọwọ.

Ohun elo oniṣẹ Jade Fun ṣe afihan ni apẹẹrẹ atẹle. Nibi lupu ṣe atunwo awọn titẹ sii orun 100 ati ṣe afiwe ọkọọkan pẹlu iye oniyipada dVal… Ti a ba rii ibaamu kan, lẹhinna lupu naa ti pari:

Fun i = 1 Si 100 Ti dValues(i) = dVal Lẹhinna IndexVal = i Jade Fun Ipari Ti o ba tẹle i

Awọn Do Lakoko Yipu ni Ipilẹ wiwo

Ọmọ Ṣe nigba ti ṣiṣẹ koodu koodu kan niwọn igba ti ipo pàtó kan ti pade. Awọn atẹle jẹ apẹẹrẹ ti ilana kan Ipele, ninu eyiti lilo lupu Ṣe nigba ti Awọn nọmba Fibonacci ti ko kọja 1000 ni a fihan ni atẹlera:

'Iha ilana igbejade Fibonacci awọn nọmba ti ko koja 1000 Sub Fibonacci () Dim i As Integer 'counter lati tọkasi awọn ipo ti awọn ano ni ọkọọkan Dim iFib Bi Integer' itaja awọn ti isiyi iye ti awọn ọkọọkan Dim iFib_Next Bi Integer 'toju tókàn iye ti ọkọọkan Dim iStep As Integer 'awọn ile itaja iwọn ti afikun atẹle' bẹrẹ awọn oniyipada i ati iFib_Next i = 1 iFib_Next = 0 'Ṣe Lakoko ti loop yoo ṣiṣẹ titi iye 'nọmba Fibonacci lọwọlọwọ yoo tobi ju 1000 Ṣe Lakoko ti iFib_Next Ti <1000 1 Lẹhinna 'ọran pataki fun ipin akọkọ iStep = 1 iFib = 0 Bibẹẹkọ 'fipamọ iwọn ti ilọsiwaju atẹle ṣaaju ki o to kọkọ’ iye lọwọlọwọ ti ọkọọkan iStep = iFib iFib = iFib_Next Ipari Ti 'tẹ nọmba Fibonacci lọwọlọwọ ni iwe A ti iwe iṣẹ ti nṣiṣe lọwọ 'ni ila pẹlu atọka i Awọn sẹẹli(i, 1) .Iye = iFib 'ṣe iṣiro nọmba Fibonacci t'okan ki o si ṣe afikun itọka ipo ano nipasẹ 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Ninu apẹẹrẹ ti a fun, ipo naa iFib_Niwaju <1000 ṣayẹwo ni ibẹrẹ ti lupu. Nitorina, ti o ba ti akọkọ iye iFib_Itele Ti o ba jẹ pe o ju 1000 lọ, lẹhinna lupu naa kii yoo ṣiṣẹ.

Ona miiran lati lo lupu kan Ṣe nigba ti - gbe ipo naa kii ṣe ni ibẹrẹ, ṣugbọn ni opin lupu naa. Ni ọran yii, lupu naa yoo ṣiṣẹ ni o kere ju lẹẹkan, laibikita boya ipo naa ti pade.

Schematically, iru a ọmọ Ṣe nigba ti pẹlu ipo lati ṣayẹwo ni ipari yoo dabi eyi:

Ṣe ... Loop Lakoko iFib_Next <1000

Цикл “Ṣe Titi” в Visual Basic

Ọmọ Ṣe Titi gidigidi iru si ọmọ Ṣe nigba ti: Àkọsílẹ koodu ti o wa ninu ara ti lupu ti wa ni ṣiṣe leralera titi ti ipo ti o pato yoo fi pade (abajade ti ikosile ipo jẹ otitọ). Ninu ilana ti o tẹle Ipele lilo a ọmọ Ṣe Titi gba awọn iye pada lati gbogbo awọn sẹẹli ninu iwe kan A iwe iṣẹ titi ti ọwọn yoo fi pade sẹẹli ti o ṣofo:

iRow = 1 Ṣe Titi IsEmpty (Awọn sẹẹli (iRow, 1)) 'Iye ti sẹẹli lọwọlọwọ wa ni ipamọ sinu orun dCellValues ​​dCellValues(iRow) = Awọn sẹẹli (iRow, 1) .Iye iRow = iRow + 1 Loop

Ni apẹẹrẹ loke, ipo naa IsEmpty(Awọn sẹẹli (iRow, 1)) be ni ibẹrẹ ti awọn be Ṣe Titi, nitorinaa lupu naa yoo ṣiṣẹ ni o kere ju ẹẹkan ti sẹẹli akọkọ ti o ya ko ba ṣofo.

Sibẹsibẹ, bi o ṣe han ninu awọn apẹẹrẹ lupu Ṣe nigba ti, ni diẹ ninu awọn ipo o jẹ dandan pe lupu naa wa ni pipa ni o kere ju ẹẹkan, laibikita abajade ibẹrẹ ti ikosile ipo. Ni ọran yii, ikosile ipo yẹ ki o gbe ni opin lupu, bii eyi:

Ṣe ... Yipo Titi Isodi (Awọn sẹẹli (iRow, 1))

Fi a Reply