IZBORNIK HOME FORUM ACCESS EXCEL WORD  
 

HOME

   

3

Naredbe

3.1.1 IF naredba
3.1.2 SELECT CASE naredba
3.1.3 GoTo naredba
   
3.2

LOOP - Petlje

3.2.1 For-Next petlja
3.2.2 Do While petlja
3.2.3 Do Until petlja
3.3

Niz, String, Function

3.3.1 Nizovi
3.3.2 Stringovi
3.3.3 Rad sa slovima č, ć, š, đ, ž
3.3.4 Like operator
3.3.5 Funkcija Format
3.3.6 Predefinirani Formati za Datum i Vrijeme
3.3.7 Numerički formati
3.3.8 Korisnički Formati za Datum i Vrijeme
   
 

MICROSOFT EXCEL 2003 - VBE i VBA - NAREDBE i Kontrola toka u VBA, Do While loop (petlja) naredba u VBA

Naredbe i Petlje u VBA u Excelu
(
Kontrola toka programa u VBA)

Search This Web Site

Adsense sponzor






Do While petlja (loop) u VBA - Kontrola toka programa u VBA

Do While predstavlja drugi tip petlji u VBA. Za razliku od brojačke For-Next petlje, ova se petlja izvršava sve dok je ispunjen određeni uvjet. Do While petlja može uzeti jedan od slijedeća dva oblika:

Do While Uvjet
Upute
Loop

ili

Do
Upute
Loop While Uvjet

While uvjet se može staviti na početak ili na kraj petlje. Razlika između ova dva oblika Do While petlje je u trenutku kad se provjerava točnost uvjeta. U prvom obliku se uvjet provjerava odmah na početku petlje i može se desiti da se u petlju uopćte ne uđe. U drugom obliku se uvjet provjerava na kraju petlje i petlja se izvršava minimum jedanput. Forsirani izlazak iz Do While petlje se vrši naredbom Exit Do.

Uočite primjer sa zbrajanjem brojeva manjih od 100 koristeći oba oblika Do While petlje.

S = 0: I = 1
Do While I < 100
S = S + I
I = I + 1
Loop
S = 0: I = 0
Do
I = I + 1
S = S + I
Loop While I < 99

Moramo voditi računa da se varijabla od koje zavisi uvjet izvršenja petlje mijenja tako da jednog trenutka taj uvjet ne bude zadovoljen. Ukoliko to nije ispunjeno, dobit ćemo beskonačnu petlju. U našem slučaju, varijabla I raste dok ne postane 100 u slučaju prve petlje i 99 u slučaju druge petlje. Dakle, pri izlasku iz petlje, varijabla od koje zavisi uvjet petlje ima prvu vrijednost za koju taj uvjet nije zadovoljen.

Uočimo korištenje dvotočke radi grupiranja više VBA instrukcija u jednu liniju. Napomenimo i to da je dio While Uvjet u sintaksi petlje opcionalan, tj. ne mora se navoditi uvjet.

Tada se u petlji mora naći Exit Do radi izlaska iz petlje. Prethodni primjer urađen koristeći ovaj oblik Do While petlje je dat ispod.

S = 0: I = 1
Do
S = S + I
I = I + 1
If I = 100 Then Exit Do
Loop


Pogledajte još jedan primjer Do While petlje koja pronalazi prvu praznu ćeliju u stupcu A

Sub Doo_While() 'kolona A

Dim ws As Worksheet
Dim
i As Long
Dim res As Double
Dim aaa As Double

aaa = Timer
'BROJ SEKUNDI OD PONOCI DO SAD **************
Set ws = Sheets(1)

i = 1
'Pocetni red za kolonu "A" je prvi red tj. 1, deklariranje izvršeno kao Long
Do While ws.Cells(i, 1) <> ""
' Radi petlju ako je A-i (pocetno A1 ili 'i' row, stupac 1) <> od prazno - ako ima upis
i = i + 1
' Uvecaj i za 1 - A2, A3,...posto je deklarirani 'i' oznacava red rezultat je 'red+1'
Loop
' Prekini petlju kad A-i ("A65530") bude prazno sto znaci kada petlja naiđe na prvi red tj. celiju 'i' koja je prazna jer ne ispunjava uvjet <> ""

ws.Cells(i, 1).Select
' Selektiraj tu celiju - prvu praznu - "broj redova u stupcu A za Excel 2003 je 65530"
ws.Cells(i, 1) = "Do While-Loop"
' Upisi u tu celiju ...tekst pod navodnicima

res = Timer - aaa
' vreme trajanja procedure - (od ponoci do sad (-MINUS-) od ponoci do maloprije - aaa)
MsgBox FormatNumber(res, 2) & " sekudi"
' poruka o vremenu trajanja procedure - u sekundama

End Sub


Da bi uočili razliku u brzini rada petlji skinite ove files (*.xls i *.xlsm)  i isprobajte (DOWNLOAD).

Uočite koliko se brže izvršava petlja End Down

Sub End_Down() 'kolona A
'Application.ScreenUpdating = False

Dim xy As Long, res As Double, aaa As Double
aaa = Timer
'BROJ SEKUNDI OD PONOCI DO SAD

xy = Sheets(1).Range("A1").End(xlDown).Row + 1

Cells(xy, 1).Select
Selection.Value = "End (xlDown)"

res = Timer - aaa
MsgBox FormatNumber(res, 2) & " sekudi"

End Sub
(autor End Down petlje neptuncokg)
Dakle treba koristiti petlje DO samo kada se mora a u suprotnom koristiti petlje
END

Adsense sponzor




 

Brzine izvršavanja petlji

Excel 2003 sa 65530 redova

AAA - Do While-Loop => 0,53 sec
BBB - Do Until-Loop => 0,52 sec

AAA - Do Loop-While => 0,52 sec
BBB - Do Loop-Until => 0,50 sec

AAA - End Down => 0,05 sec
BBB - End Up => 0,05 sec
Excel 2007 sa 1048576 redova

AAA - Do While-Loop => 7,91 sec
BBB - Do Until-Loop => 8,01 sec

AAA - Do Loop-While => 7,81 sec
BBB - Do Loop-Until => 7,77 sec

AAA - End Down => 0,50 sec
BBB - End Up => 0,40 sec

Petlje u VBA za Excel

Adsense sponzor




Adsense sponzor



Ova web stranica koristi COOKIES - COPYRIGHT - 2011 - IvanC - ic.ims.hr