Ansas in VBA

Adiunctis sunt ubi programma VBA requiritur ad eundem modum actionum aliquoties in ordine peragendum (id est saepius eundem truncum codicis repetam). Hoc fieri potest utens VBA loramenta.

VBA ansas includunt:

Deinde quemlibet istorum cyclorum inspiciamus propius.

Nam Loop Operator in Visual Basic

Structura loop operator quod in Visual Basic constitui potest in una duarum formarum: ut ansa Nam…Next aut in loop Nam quisque.

Cycle "Pro ... Next"

exolvuntur Nam…Next variabili utitur quod successiue valores ex data visibilis sumit. Cum unaquaque mutatione valoris variabilis, actiones in corpore cycli inclusae peraguntur. Hoc facile est intelligere ex exemplo simplici;

Ad i = 1 Ad 10 Summa = Total + iArray(i) Post i*

Hoc simplex loop Nam…Next variabilis adhibetur i, quae consequenter sumit bona 1, 2, 3, ... 10, et pro singulis valoribus, codice VBA intra fasciam afficitur. Ita haec ansa sumit elementorum aciem. iArray in variabilis summa.

In exemplo, ansa incrementi non specificatur, ut incrementum invariabile i ex I ad X, defectus incrementum 1... In quibusdam tamen valoribus diversis incrementis uti necesse est pro fascia. Hoc fieri potest utens keyword Ego morsque dividimurut patet in his simplicibus exemplis.

Pro d = 0 Ad 10 Gradum 0.1 dTotal = dTotal + d Post d

Cum in exemplo praedicto, gradus incrementi positus est aequalis 0.1ergo variabilis dTotal nam repetitio cycli in valoribus 0.0, 0.1, 0.2, 0.3, 9.9, 10.0.

Ad gradum ansam in VBA determinare, valore negativo uti potes, exempli gratia, sic:

Nam i = 10 Ad 1 Step -1 iArray(i) = i Post i

Hic incrementum est -1sic variabilis i cum repetitio cycli recipiat valores 10, 9, 8, …1.

Loop "Quialibet"

exolvuntur Nam quisque similis exolvuntur Nam…Nextsed pro iteratione per ordinem valorum pro contrariis variabilibus, fascia Nam quisque praestat paro of actiones pro singulis objectis in determinato coetu obiecti. In hoc exemplo utens ansa Nam quisque recenset omnes chartas currenti in Opera Praecedo:

Dim wSheet Ut Officina Pro Quisque wSheet in Officinis MsgBox "Найден лист:" & wSheet.Name Next wSheet

Loop adjicias dicitur "Exit enim"

operator Nam exitus interrumpere solebant cycli. Cum haec enuntiatio in codice occurrit, programma executione ansa finit et ad executionem dictorum quae in codice statim post hanc ansam procedit. Hoc adhiberi potest, exempli gratia, ad certum valorem in acie quaerendum. Ad hoc utens ansa, singula elementa instructa lustrata sunt. Ut primum elementum requisitum inveniatur, non oportet quod reliquum perspicere - interrumpatur cyclus.

Operans applicationem Nam exitus demonstretur in hoc exemplo. Hic ansa iterat super 100 entries ordinata et comparat unumquemque cum valore variabilium dVal... Si par inventus fuerit, fascia terminatur;

Nam i = 1 Ad 100 Si dValues(i) = dVal Deinde IndexVal = i Exeunt Ad Finem Si Proximus i

Do dum loop in Visual Basic

exolvuntur Fac cum facit truncum codicem, dum certa conditio occurrit. Hoc est exemplum procedendi subIn quo per loop Fac cum Numeri Fibonacci non excedentes 1000 sequentes exhibentur;

"Sub procedure outputs Fibonacci numeros non excedentes 1000 Sub Fibonacci() Dim i Ut Integer 'contro ad indicandum positionem elementi in serie Dim iFib Ut Integer 'scribit praesentem valorem sequentiae Dim iFib_Next Ut Integer' addit valorem proximum seriei Dim iStep Ut Integrum 'copia quantitatis incrementi proxime' initialize variabilium i et iFib_Next i = 1 iFib_Next = 0 ' Fac Dum fascias faciet usque ad valorem 'Fibonacci numeri currentis maior quam 1000 Do Dum iFib_Next < 1000 Si i = 1 Deinde 'specialis casus primi elementi iStep = 1 iFib = 0 Alioquin' praeter quantitatem incrementi sequentis antequam overscribatur 'praesens valor sequentis iStep = iFib iFib = iFib_Next End If' imprimere numerum currentem Fibonacci in columna A of Officina activa' in versu cum indice i Cellae (i , 1). Value = iFib' Numerum Fibonacci proxime ac incrementi elementi situm indicem per 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

In exemplo, conditio iFib_Next < 1000 sedatus initio ansa. Si igitur primum valorem iFib_Next Si plures essent quam 1000, numquam ansa supplicium esset.

Alio modo ad efficiendum loop Fac cum — Conditionem pone non in principio, sed in fine ansa. Hoc in casu, ansa fiet semel saltem, cuiuscumque condicionis occurrat.

Schematice talis cyclus Fac cum cum conditione resecanda in fine videbimus sic:

Fac ... loop dum iFib_Next < 1000

Цикл «Do Usque» в Visual Basic

exolvuntur Donec fac simillima exolvuntur Fac cum: truncus codici in corpore fasciae iterum atque iterum afficitur donec certa conditio occurrat (exitus condicionalis expressio est. verum). In altera procedure sub usus exolvuntur Donec fac recuperare bona ab omnibus cellulis in columna A officina usque ad columnam cellam vacuam incurrit:

iRow = 1 Usque ad IsEmpty(Cells(iRow, 1)) ' Valor cellae hodiernae in ordinata dCellValues ​​dCellValues(iRow) = Cellulae(iRow, 1).Value iRow = iRow + 1 Loop

In exemplum supra conditionem IsEmpty(Cells(iRow, 1)) sita in initio structurae Donec facita ansa fient semel saltem, si prima cella sumta vacua non est.

Sed exempla, ut patet in loop Fac cumin quibusdam adiunctis necesse est ut fascias semel saltem, cuiuscumque effectus initialis expressionis conditionalis, efficiatur. Hoc in casu, expressio condicionalis in fine ansa collocanda est, hoc modo:

Fac ... Loop Usque IsEmpty(Cells(iRow, 1))

Leave a Reply