Vba za next ide na sljedeću vrijednost. Petlje u VBA. Izlaz za operatora prekida petlje

28.03.2020 Savjet

Za...Sljedeća petlja VBA Excel, njegovu sintaksu i opis pojedinih komponenti. Primjeri korištenja petlje For...Next.

Petlja For...Next u VBA Excelu dizajnirana je za izvođenje grupe naredbi potreban broj puta, što je određeno kontrolnom varijablom petlje - brojačem. Kako se petlja izvršava, vrijednost brojača nakon svake iteracije povećava se ili smanjuje za broj naveden u izrazu naredbe Step ili, prema zadanim postavkama, za jedan. Kada trebate preći u petlju preko elemenata čiji su broj i indeksiranje u grupi (raspon, niz, zbirka) nepoznati, trebali biste koristiti .

For sintaksa petlje...Dalje

Za brojač = početak Do kraja [ Korak korak ] [ izjave ] [ Izlaz za ] [ izjave ] Dalje [ brojač ] Za brojač = početak Do kraja [ Korak korak ] [ izjave ] [ Izlaz za ] [ izjave ] Dalje [ brojač ]

U uglate zagrade navedeni su izborni atributi petlje For...Next.

Komponente Za... Sljedeći ciklus

komponenta Opis
brojač Obavezan atribut. Numerička varijabla koja djeluje kao brojač, naziva se i kontrolna varijabla petlje.
početak Obavezan atribut. Numerički izraz koji navodi početnu vrijednost brojača.
kraj Obavezan atribut. Numerički izraz koji navodi konačnu vrijednost brojača.
Korak* Izborni atribut. Izjava koja pokazuje da će biti naveden korak petlje.
korak Izborni atribut. Numerički izraz koji određuje korak petlje. Može biti pozitivan ili negativan.
izjave Izborni** atribut. Operatori u vašem kodu.
Izlaz za Izborni atribut. Operator izlazi iz petlje prije nego što ona završi.
Sljedeći [counter] Ovdje brojač- izborni atribut. Ovo je isto ime kontrolne varijable petlje, koja se ovdje može izostaviti.

*Ako atribut Korak nedostaje, For...Next petlja se izvodi sa zadanim korakom jednakim 1 .

**Ako ne koristite vlastiti kod u petlji, gubi se smisao korištenja petlje.

Primjeri petlji For... Next

Možete kopirati ogledne petlje u svoj VBA modul, pokrenuti ih jednu po jednu i vidjeti rezultate.

Najjednostavniji ciklus

Ispunite prvih deset ćelija prvog stupca aktivnog lista Excel u brojkama od 1 do 10:

Subtest1() Dim i As Long For i = 1 do 10 Cells(i, 1) = i Next End Sub

Najjednostavniji ciklus s koracima

Operator Step s vrijednošću 3 dodan je prethodnoj petlji, a rezultati su zapisani u drugom stupcu:

Subtest2() Dim i As Long For i = 1 do 10 Step 3 Cells(i, 2) = i Next End Sub

Petlja s negativnim argumentima

Ova petlja ispunjava prvih deset ćelija trećeg stupca obrnutim redoslijedom:

Subtest3() Dim i As Long For i = 0 do -9 Step -1 Cells(i + 10, 3) = i + 10 Next End Sub

Povećavamo veličinu koraka na -3 i zapisujemo rezultate u četvrti stupac aktivnog Excel lista:

Subtest4() Dim i As Long For i = 0 do -9 Step -3 Cells(i + 10, 4) = i + 10 Next End Sub

Ugniježđena petlja

Vanjska petlja sekvencijalno postavlja indekse prvih deset redaka aktivnog lista, a ugniježđena petlja zbraja brojeve u prve četiri ćelije retka s trenutnim indeksom i zapisuje zbroj u ćeliju petog stupca. Prije pokretanja ugniježđene petlje s kumulativnim zbrajanjem, poništavamo petu ćeliju odgovarajućeg retka tako da, ako u njoj postoji neki broj, neće biti dodan ukupnom broju.

Subtest5() Dim i1 As Long, i2 As Long For i1 = 1 To 10 "Dodijelite petoj ćeliji u retku i1 0 Cells(i1, 5) = 0 For i2 = 1 To 4 Cells(i1, 5) = Cells( i1 , 5) + Cells(i1, i2) Next Next End Sub

Izlaz iz petlje

U šesti stupac aktivnog lista upisat ćemo imena deset životinja, naravno, koristeći For... Sljedeća petlja:

Subtest6() Dim i As Long For i = 1 Do 10 Cells(i, 6) = Choose(i, "Medvjed", "Slon", "Žirafa", "Antilopa", _ "Krokodil", "Zebra", "Tigar", "Gušter", "Lav", "Hippopotamus") Next End Sub

Sljedeća petlja će u šestom stupcu tražiti krokodila koji je jeo galoše. U ćeliju sedmog stupca petlja će ispisati redak "Ovdje je bila petlja" sve dok ne naiđe na krokodila, a kada pronađe krokodila ispisat će "Pojeo je kaloše" i prestati s radom izvršavanjem Exit Za naredbu. To će biti vidljivo u ćelijama pored imena životinja ispod krokodila, koje neće sadržavati tekst "Ovdje je bio ciklus."

Subtest7() Dim i As Long For i = 1 To 10 If Cells(i, 6) = "Krokodil" Then Cells(i, 7) = "On je pojeo kaloše" Exit For Else Cells(i, 7) = " Ovdje je bio ciklus "End If Next End Sub

Takvi podaci su aktivni Excel list dobit ćete ako ga sekvencijalno pokrenete u VBA editoru svih sedam potprograma iz primjera koji demonstriraju rad petlji For...Next.

Petlja s frakcijskim argumentima

Atributi početka, kraja i koraka mogu biti predstavljeni brojem, varijablom ili numeričkim izrazom:

Za i = 1 do 20 korak 2 za i = a do b korak c za i = a - 3 do 2b + 1 korak c/2

Izračunavanje vrijednosti varijable izvan petlje ili izraza unutar nje može rezultirati frakcijskim rezultatom. VBA Excel će ga zaokružiti na cijeli broj koristeći:

"Vrijednosti atributa prije zaokruživanja za i = 1,5 do 10,5 korak 2.51 "Zaokružene vrijednosti atributa za i = 2 do 10 korak 3

Pokušajte ne dopustiti nezaokružene vrijednosti argumenata u tijelo petlje For...Next, kako ne biste dobili nepredvidive rezultate njezinog izvršenja. Ako ne možete bez frakcijskih brojeva, ali morate koristiti redovito zaokruživanje, koristite ga u svom kodu VBA funkcija Worksheet WorksheetFunction. Zaokružite da biste zaokružili broj prije upotrebe u petlji For...Next.

Postoje situacije kada VBA program mora izvršiti isti skup akcija nekoliko puta zaredom (to jest, ponoviti isti blok koda nekoliko puta). To se može učiniti pomoću VBA petlji.

Naredba za petlju u Visual Basicu

Struktura iskaza petlje Za V Visual Basic može se organizirati u jednom od dva oblika: kao petlja Za… Dalje ili poput ciklusa Za svakoga.

Ciklus “Za...Dalje”

Ciklus Za… Dalje koristi varijablu koja uzastopno uzima vrijednosti iz zadanog raspona. Sa svakom promjenom vrijednosti varijable izvode se akcije sadržane u tijelu petlje. To je lako razumjeti iz jednostavnog primjera:

Za i = 1 do 10 Ukupno = Ukupno + iArray(i) Sljedeći i

U ovoj jednostavnoj petlji Za… Dalje koristi se varijabla ja, koji sekvencijalno uzima vrijednosti 1, 2, 3, ... 10, a za svaku od ovih vrijednosti se izvršava VBA kod unutar petlje. Dakle, ova petlja zbraja elemente niza iArray u varijabli Ukupno.

U gornjem primjeru, korak povećanja petlje nije naveden, kako bi se povećala varijabla ja Od 1 do 10 zadana vrijednost je povećanje 1 . Međutim, u nekim slučajevima potrebno je koristiti različite vrijednosti povećanja za petlju. To se može učiniti pomoću ključna riječ Korak, kao što je prikazano u sljedećem jednostavnom primjeru.

Za d = 0 do 10 Korak 0.1 dUkupno = dUkupno + d Sljedeći d

Budući da je u gornjem primjeru korak povećanja postavljen na 0.1 , zatim varijabla dUkupno za svako ponavljanje ciklusa uzima vrijednosti 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.

Da biste odredili korak petlje u VBA, možete koristiti negativnu vrijednost, na primjer, ovako:

Za i = 10 do 1 korak -1 iArray(i) = i Sljedeći i

Ovdje je korak povećanja -1 , dakle varijabla ja svakim ponavljanjem ciklusa poprima vrijednosti 10, 9, 8, ... 1.

Za svaku petlju

Ciklus Za svakoga izgleda kao ciklus Za… Dalje, ali umjesto petlje kroz niz vrijednosti za varijablu brojača Za svakoga izvodi skup akcija za svaki objekt u određenoj grupi objekata. U sljedećem primjeru, korištenjem petlje Za svakoga Ispisani su svi listovi u trenutnom listu radna bilježnica Excel:

Dim wSheet kao radni list za svaki wSheet u radnim listovima MsgBox "Sheet Found: " & wSheet.Name Next wSheet

Izlaz za operatora prekida petlje

Operater Izlaz za koristi se za prekid ciklusa. Čim se ova naredba naiđe u kodu, program završava izvršavanje petlje i nastavlja izvršavati naredbe koje se nalaze u kodu odmah nakon ove petlje. To se može koristiti, na primjer, za traženje određene vrijednosti u nizu. Da biste to učinili, upotrijebite petlju za pregled svakog elementa niza. Nakon što je traženi element pronađen, nema potrebe pregledavati ostatak - ciklus se prekida.

Aplikacija operatera Izlaz za prikazano u sljedećem primjeru. Ovdje petlja prolazi kroz 100 unosa polja i uspoređuje svaki s vrijednošću varijable dVal. Ako se pronađe podudaranje, petlja se prekida:

For i = 1 To 100 If dValues(i) = dVal Then IndexVal = i Exit For End If Next i

Do While petlja u Visual Basicu

Ciklus Radite dok izvršava blok koda sve dok je ispunjen zadani uvjet. Slijedi primjer postupka Pod, u kojem, pomoću petlje Radite dok Fibonaccijevi brojevi koji ne prelaze 1000 prikazani su u nizu:

"Sub procedura ispisuje Fibonaccijeve brojeve koji ne prelaze 1000 Sub Fibonacci() Dim i As Integer "brojač za označavanje položaja elementa u nizu Dim iFib As Integer "pohranjuje trenutnu vrijednost niza Dim iFib_Next As Integer "pohranjuje sljedeća vrijednost niza Dim iStep As Integer "pohranjuje veličinu sljedećeg inkrementa "inicijalizira varijable i i iFib_Next i = 1 iFib_Next = 0 "Do While petlja će se izvoditi dok vrijednost "trenutačnog Fibonaccijevog broja ne prijeđe 1000 Do Dok je iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

U navedenom primjeru uvjet iFib_Dalje< 1000 provjeriti na početku ciklusa. Stoga, ako je prva vrijednost iFib_Dalje Da je više od 1000, tada se petlja ne bi izvršila niti jednom.

Drugi način implementacije petlje Radite dok– postavite uvjet ne na početak, već na kraj petlje. U ovom slučaju, petlja će se izvršiti barem jednom, bez obzira na to je li uvjet istinit.

Shematski takav ciklus Radite dok uz provjeru uvjeta na kraju izgledat će ovako:

Do...Loop While iFib_Next< 1000

Do petlje u Visual Basicu

Ciklus Učinite Do vrlo sličan ciklusu Radite dok: Blok koda u tijelu petlje izvodi se iznova i iznova dok se ne zadovolji navedeni uvjet (rezultat uvjetnog izraza je Pravi). U sljedećem postupku Pod pomoću petlje Učinite Do izvlači vrijednosti iz svih ćelija u stupcu A radni list dok se u stupcu ne naiđe na praznu ćeliju:

IRow = 1 Do IsEmpty(Cells(iRow, 1)) "Vrijednost trenutna ćelija pohranjeno u nizu dCellValues ​​​​dCellValues(iRow) = Cells(iRow, 1).Vrijednost iRow = iRow + 1 petlja

U gornjem primjeru uvjet Prazna je (ćelije (iRow, 1)) nalazi se na početku strukture Učinite Do, stoga će se petlja izvršiti barem jednom ako prva uzeta ćelija nije prazna.

Međutim, kao što je pokazano u primjerima petlje Radite dok, u nekim situacijama želite da se petlja izvrši barem jednom, bez obzira na početni rezultat uvjetnog izraza. U ovom slučaju, uvjetni izraz treba staviti na kraj petlje, ovako:

Uradi ... Petlja dok nije prazno (ćelije (iRow, 1))

Ciklus je skupina naredbi koje se ponavljaju. Za organiziranje petlji u VBA, to jest za opetovano izvršavanje jedne ili više naredbi, možete koristiti dvije glavne grupe: petlje s For...Next nabrajanjem i petlje s Do... Loop uvjetom. Postoje dvije varijante Za... Sljedeći(For-Next i For Every-Next) i dvije vrste petlji Uradi...petlja(Do While...Loop i Do Until...Loop), koji se razlikuju po vrsti stanja koje se testira.

Za-sljedeća petlja

Najčešća petlja u VBA je For-Next enum petlja. Ova petlja treba postaviti granice (početne i konačne vrijednosti brojača) unutar kojih će se varijabla petlje mijenjati.

Naredba petlje ima sljedeću sintaksu:
Za Za n=1)
Da Konačna vrijednost ( Da 10)
Korak Povećanje ( Korak 2)

Sljedeći[brojač]

Ovdje je varijabla brojač, vrijednost varijable se povećava ili smanjuje sa svakom iteracijom petlje. Ako nema koraka u konstrukciji petlje, tada je inkrement 1 (zadano). Za rani izlaz iz naredbe petlje, tj. Prije nego brojač postigne konačnu vrijednost, operator se mora uvesti u konstrukciju petlje Izlaz za.

Uzeti u obzir Izlaz za Naredba petlje ima sljedeću sintaksu:
Za brojač = Početna vrijednost(na primjer, Na primjer, Za n=1)
Da Konačna vrijednost ( Da 10)
Korak Povećanje ( Korak 2)
[Upute] ili [Blok operatera]
Izlaz za
Sljedeći[brojač]

Za obradu grupe homogenih objekata ili nizova koristi se sljedeća konstrukcija petlje:
Za svakoga Element U Grupa (naziv grupe sličnih objekata)
[Upute] ili [Blok operatera]
Izlaz za
Sljedeći element

Petlje s uvjetom Do While...Loop i Do Until...Loop

Naredba Do While...Loop ponavlja se sve dok je ispunjen određeni uvjet. Treba napomenuti da se uvjet provjerava prije nego što se izvrši naredba ili grupa naredbi.

U ovom slučaju, sintaksa naredbi Do While...Loop je sljedeća:
Radite dok uvjet (Na primjer, x<20)
[Upute] ili [Blok operatera]
Izlaz Do
Petlja


Čini
[Upute] ili [Blok operatera]
Izlaz Do
Petlja dok stanje

Naredba Do Until...Loop ponavlja se dok se uvjet ne ispuni, a kada je uvjet ispunjen, naredba izlazi iz petlje. Uvjet se provjerava prije nego što se izvrši naredba ili grupa naredbi.

U ovom slučaju, sintaksa operatora petlje Do Until... je sljedeća:
Učinite Do uvjet (Na primjer, x=20)
[Upute] ili [Blok operatera]
Izlaz Do
Petlja

Ako trebate provjeriti uvjet nakon što su instrukcije ili blok naredbi izvršeni barem jednom, tada možete koristiti sljedeću konstrukciju operatora petlje:
Čini
[Upute] ili [Blok operatera]
Izlaz Do
Petlja do stanje

Algoritam For….Next ciklusa prikazan je na sl. 5.28.

Brojač – bilo koja VBA numerička varijabla, obično Integer ili Long varijabla.

Početak - bilo koji numerički izraz i određuje početnu vrijednost za varijablu Brojač.

Kraj – numerički izraz koji određuje konačnu vrijednost za varijablu Brojač .

Izjave – jedan, više ili nijedan operator. Ovi iskazi izvršavaju tijelo petlje. VBA izvršava svaki od ovih iskaza svaki put kada se petlja izvrši.

Ključna riječ Sljedeći

Brojač=brojač+StepSise

Sl.9.28. Za….Algoritam sljedeće petlje

Ključna riječ Sljedeći govori VBA da je dosegnut kraj petlje. Opcijska varijabla brojača nakon ključne riječi Next mora biti ista varijabla brojača koja je navedena nakon ključne riječi For na početku strukture petlje.

Sintaksa:

Za brojač = od početka do kraja

Prilikom izvođenja petljeZaSljedeći VBAodvija se na sljedeći način:

Dodjeljuje vrijednost koju predstavlja Zvijezda , varijabla S teta .

Izvršava sve naredbe predstavljene s Izjave dok ne dođe do ključne riječi Sljedeći . Ključna riječ Sljedeći pokazuje VBA da je dosegnut kraj tijela petlje.

Modificira varijablu S teta po iznosu StepSize (ako je uključena neobavezna riječ Step) Ako Step nije definiran, tada VBA povećava varijablu brojača za 1.

Vraća se na početak petlje i uspoređuje trenutnu vrijednost varijable S teta s vrijednošću predstavljenom End. Ako vrijednost S teta manje od vrijednosti Kraj , VBA nastavlja s izvršenjem od prve naredbe nakon ključne riječi Sljedeći .

9.2.4. I/O jednodimenzionalnih i dvodimenzionalnih nizova

Niz (niz) je skup varijabli koje imaju zajedničko ime i osnovni tip. Niz je prikladan način za pohranu više povezanih podatkovnih stavki u jednom spremniku za veću praktičnost i učinkovitost programiranja. Svi podatkovni elementi pohranjeni u nizu moraju biti istog tipa.

Niz vam omogućuje pohranjivanje i manipuliranje mnogim elementima podataka putem jedne varijable. Osim smanjenja ukupnog broja različitih naziva varijabli koje je potrebno pratiti, druga glavna prednost korištenja nizova je da se petlje mogu koristiti za jednostavnu obradu različitih elemenata niza. Kombiniranjem nizova i struktura petlje (obično For....Next), možete napisati mali broj izjava koje obrađuju veliku količinu podataka. Obavljanje istih zadataka korištenjem pojedinačnih varijabli može zahtijevati pisanje stotina izjava.

Dimenzija polja

Programski jezici obično koriste jednodimenzionalne i višedimenzionalne nizove, od kojih neki opisuju relativno jednostavne, a drugi složenije objekte.

Jednodimenzionalni nizovi

Primjer jednodimenzionalnog niza dan je u tablici br. 9.9.

Tablica br. 9.9

U programiranju se obično koristi numeriranje temeljeno na nuli.

Za pristup podacima pohranjenim u određenom elementu niza, morate navesti naziv niza iza kojeg slijedi broj koji se naziva indeks elementa. Indeks se nalazi u zagradama. Na primjer, ako je polje u tablici #1.1 nazvano DoubleArray, tada sljedeća izjava dodjeljuje broj 45 varijabli DoubleAny.

DoubleAny = DoubleArray (3)

U ovoj izjavi, broj 3 je indeks niza. Budući da numeriranje elemenata počinje od nule, element na koji se referira operator zapravo je četvrti element DoubleArray-a.

Prilikom izvršavanja naredbe DoubleArray, VBA odabire vrijednost 45 i pohranjuje tu vrijednost u varijablu DoubleArray.

Isti se operator može koristiti pri pohranjivanju podataka u nizu:

DoubleArray (5)=12.

Kada se ova naredba izvrši, VBA postavlja vrijednost 12 u navedeni element niza, zamjenjujući prethodni sadržaj tog elementa.

Jednodimenzionalni nizovi obično se koriste za predstavljanje raznih popisa podataka.

Višedimenzionalni nizovi

Kada je potrebno predstaviti podatkovne tablice s podacima organiziranim u formatu redaka i stupaca, za to se koriste višedimenzionalni nizovi.

U dvodimenzionalnom nizu, adresa svake ćelije sastoji se od dva broja: broja retka (prvi indeks) i broja stupca (drugi indeks). U VBA možete stvoriti nizove do 60 dimenzija.

Ako se broj elemenata u nizu ne mijenja, tada se takav niz naziva statičnim.

Statički i dinamički nizovi

Ako prilikom izvođenja VBA programa možete promijeniti broj elemenata u nizu, tada se takvi nizovi nazivaju dinamičkim. Za promjenu veličine dinamičkog niza upotrijebite operator ReDim.

VBA održava rezervirano područje memorije za sve elemente u nizu sve dok postoji varijabla vrste polja. Takvi se nizovi nazivaju statičnim jer se broj elemenata u nizu ne mijenja.

OperaterOpcija Baza

Obično VBA koristi nizove temeljene na nuli. Operator Option Base omogućuje vam da navedete 0 ili 1 kao zadano sjeme za indekse polja. Ako operater Opcija Baza ne koristi se, VBA počinje numeriranje indeksa od 0 (zadano). Naredbu Option Base morate smjestiti u područje deklaracije modula prije deklariranja bilo koje varijable, konstante ili procedure. Ne možete smjestiti iskaz Option Base unutar procedure. Možete imati samo jednu Option Base izjavu po modulu.

Sintaksa:

Opcija Baza 0|1

Deklariranje nizova

Deklariranje niza pomoću operatora Dim ima sljedeću sintaksu.

Sintaksa:

DimVarName()

Dim VarName ( gornji, gornji]….)[ Kao tip],

VarName – bilo koji naziv za niz koji zadovoljava VBA pravila za imenovanje identifikatora.

Indeksi – dimenzija niza.

Kao vrsta - tip podataka.

Lower – donja granica vrijednosti indeksa.

Upper – gornja granica vrijednosti indeksa.

Vrsta – vrsta podataka

Ako izostavite tip, svi elementi niza bit će tipa Variant. VBA inicijalizira elemente numeričkih nizova u nule i elemente nizova nizova u prazne nizove.

Dim str_array (1 do 100) Kao niz

Dim variant_array()

Dim str_Množenje (0 do 15, 0 do 15) kao niz

Korištenje polja

Da biste pristupili elementu niza, morate navesti naziv niza nakon kojeg slijedi vrijednost indeksa, u zagradama.

Upućivanje na element niza ima sljedeću sintaksu.

Sintaksa.

arrayName(validIndex1, ….)

validIndex – ime niza.

validIndex1 – važeća vrijednost indeksa za prvu dimenziju niza.

validIndex2 – važeća vrijednost indeksa za drugu dimenziju niza.

Morate dati vrijednost indeksa za svaku dimenziju niza kad god pristupite bilo kojem elementu niza.

I/O jednodimenzionalnih nizova

Kada unosite jednodimenzionalni niz, morate redom unijeti 1., 2. itd. elementi niza postupaju slično prilikom ispisivanja. Za unos ili izlaz niza morate organizirati petlju. Najprikladniji način za unos i izlaz jednodimenzionalnog niza je korištenje algoritma koji koristi bezuvjetnu petlju.

Ulazno/izlazni algoritam za jednodimenzionalni niz prikazan je na slici 5.29.

Postupak je objašnjen u nastavku.

Sub Massiv() – naziv procedure.

Dim Mas (5) As Integer - deklariran jednodimenzionalni niz od 5 elemenata, vrsta brojeva je cijeli broj.

Dim s As String – deklarirana radna varijabla za konačni ispis podataka iz polja u dijaloškom okviru. As String – tip podataka u varijabli za pohranu.

For i = 1 To 5 – postupak u prvoj petlji For….Next uzima cijele brojeve od 1 do 5 i stavlja ih u niz.

Mas (i) = InputBox (i) – unos cijelog broja za i-ti element.

Dalje – prijelaz na drugi ciklus (elementi niza se unose u red i prikazuju u dijaloškom okviru pomoću operatora MsgBox).

Za i = 1 do 5 – elementi u redu od 1 do 5.

s = s & Mas(i) & “ ;” - formiranje niza od elemenata niza. Niz se ispisuje u jednom redu. Elementi niza su odvojeni znakom “;”.

MsgBox s – izlaz prethodno unesenog polja.

Sl.5.27. Jednodimenzionalni input-output algoritam

Riža. 9.29. Algoritam i postupak za ulaz-izlaz jednodimenzionalnog niza

2D Array I/O

Algoritam i postupak za unos i izlaz dvodimenzionalnog niza prikazan je na slici 5.30.

Opis ovog postupka:

Sub Massiv() – naziv procedure

Deklaracija varijabli koje se koriste u ovoj proceduri:

Dim Mas (5, 5) Kao Integer - deklariran dvodimenzionalni niz s 5 stupaca i pet redaka, vrsta brojeva je cijeli broj.

Dim s As String – deklarirana radna varijabla za konačni ispis podataka iz polja u dijaloškom okviru. As String – tip podataka u varijabli za pohranu

Sljedeći i – kraj operacije dodjele varijabli

Unos elemenata niza u memoriju računala:

Za i = 1 do 5 – unos se vrši iz prvog elementa prve linije, zatim iz druge, itd.

Za j = 1 do 5 do kraja prvog retka, zatim od prvog elementa drugog retka, itd.

Mas(i,j) = InputBox(i,j) – operator za unos elemenata niza u memoriju računala

Riža. 9.30. Algoritam i postupak za ulaz-izlaz dvodimenzionalnog niza

Algoritmi sređivanja nizova

Kao primjer dajemo algoritam i proceduru sortiranja jednodimenzionalnog niza metodom “mjehurića”.

Ispis elemenata unesenog niza iz memorije računala:

Za i = 1 do 5 – izlaz se provodi na isti način kao i ulaz

s = s & Mas (i,j) & “ ; ”

s = s & Chr (13) – novi red (izlaz ne u jednom redu, već u nekoliko, kao u ulaznom nizu)

Next i – kraj operatora For….Next

MsgBox s – izlaz prethodno unesenog niza u dijaloški okvir

End Sub – kraj postupka.

Ova lekcija će pokriti rad s petljom. Za u VBA. Prikazat će se i primjer rada s For petljom, primjer kreiranja formula u Excelu pomoću makronaredbi.

Ciklus Za radi na principu brojača. Za koristi se u slučajevima kada je potrebno ponoviti određene radnje unaprijed određeni broj puta. Na primjer, ciklus Začesto se koristi pri čitanju nizova.

Ciklus Za ima sljedeću sintaksu:
Za brojač = početak ciklusa Do kraj ciklusa [Korak korak]
skupina operatera, timova itd.
Izlaz za
Sljedeći brojač

  • "brojač" - varijabla koja se mijenja u specificirano "korak". Ako korak nije naveden, tada je zadana vrijednost jedan.
  • "početak ciklusa", "kraj ciklusa" - brojevi ili varijable koje označavaju donju granicu brojača i gornju granicu. Ciklus se zaustavlja kada "brojač" >"kraj ciklusa" ( ili, ako je ciklus obrnut, tj. u koracima od -1, zatim "brojač"< "kraj ciklusa").
  • Izlaz za – naredba za prisilno zaustavljanje ciklusa. Koristi se u slučajevima kada se dogodio neki događaj nakon kojeg je potrebno zaustaviti izvršavanje naredbi u petlji, odnosno spriječiti pojavu greške.

Pogledajmo nekoliko primjera korištenja petlje Za. U budućnosti ćemo se vrlo često susresti s ovim ciklusom.

Primjer 1
Dana su dva stupca C i E ispunjena brojevima:

Trebate zbrojiti brojeve u stupcu C s brojevima u stupcu E na sljedeći način:
C2+E21, C3+E20, ..., C21+E2. Prikažite rezultat u stupcu D u obliku formule, tj. Sadržaj ćelije rezultata trebao bi biti "=C2+E21".

Makro kod izgleda ovako (pročitajte gdje napisati kod):

Pod Petlja_za()
"konstanta koja pokazuje granicu petlje, tj. do koje vrijednosti bi se petlja trebala pokrenuti
Konst n = 21
Za i=2 Do n
"stvorite niz formule i spremite ga u ćeliju
Ćelije(i, 4) = "=C" & CStr(i) & "+E" & CStr((n - i) + 2)
"nastavak prilikom izvođenja u petlji
Sljedeći ja
" ostatak programskog koda
End Sub

Analizirajmo napisani kod:

  • Konst n = 21 - opis konstante n s vrijednošću 21, tj. broj linija kroz koje petlja treba proći Za;
  • Za i=2 Do n - i je brojač koji će se promijeniti za 1 sa svakim prolaskom petlje. Brojač počinje na 2 i završava kada je i>n;
  • Cells(i, 4) - ćelija dodijeljen list, i je broj retka, 4 je broj stupca u kojem se prikazuje rezultat. Imajte na umu da naš brojač i označava broj retka Excel lista;
  • Sljedeći ja- operator za zatvaranje petlje i pomicanje pokazivača Za. Sve između Za I Sljedeći izvršeno u petlji;
  • CStr- funkcija koja pretvara broj u tekst.

Ćeliji dodjeljujemo formulu stvorenu na sljedeći način "=C" & CStr(i) & "+E" & CStr((n - i) + 2). Znak & je "lijepljenje" znakova i nizova. Kao rezultat, dobivamo formulu "=Sn+E((n - i) + 2)", gdje je n = 21, i je brojač.
Zastrašujuće? Samo se cini :)

Svi. Nakon izvršenja makronaredbe dobit ćemo sljedeći stupac (označen), au svakoj ćeliji formulu:

Primjer 2
Sada razmotrite petlju s navedenim korakom. Nakon izračuna zadnje makronaredbe, dobili smo tri stupca, sada moramo oduzeti D od stupca E i prikazati formule oduzimanja u stupcu F. Makro kod je sljedeći:

Pod Petlja_za_korak()
Konst n = 21
Za i = n Do 2 Korak -1
Ćelije(i, 6) = "=E" & CStr(iskaznica"& CStr(i)
Sljedeći ja
End Sub

U ovom slučaju, sve je isto, samo ciklus sada "teče" ne od 2, već od 21 do 2 s korakom -1.
Rezultat izvršenja će biti sljedeći:

Ciklus Za, u VBA, nije jedina petlja. U budućnosti ćemo razmotriti još nekoliko opcija za petlje bez kojih ne možete pri pisanju makro naredbi u Excelu.