For...Next Statement
Ripetas je specifa nombro da fojoj la ordonojn en la bloko For...Next.
Sintakso:
For counter=start To end [Step step]
ordona bloko
[Exit For]
ordona bloko
Next [counter]
Variables:
Counter: Iteracia nombrilo komence agordita al la valoro dekstre de la egalsigno (komenco). Nur numeraj valoroj validas. La iteracia nombrilo alkrementas aŭ dekrementas laŭ la variablo Step ĝis kiam ĝi superas al End.
Start: Numera valoro kiu difinas la komencan valoron je la komenco de la iteracio.
End: Numera variablo kiu difinas la finan valoron je la fino de la iteracio.
Step: Agordas la valoron laŭ kiu alkrementi aŭ dekrementi la iteracian nombrilon. Se Step ne estas specifita, la iteracia nombrilo alkrementiĝas per 1.
La iteracio For...Next ripetas ĉiujn ordonojn en la iteracio je la nombro da fojoj specifita de la parametroj.
Dum la nombrila variablo dekrementiĝas, LibreOffice Basic kontrolas ĉu la fina valoro estas atingita. Tuj kiam la nombrilo pasas la finan valoron, la iteracio aŭtomate ĉesas.
Eblas ingigi la ordonojn For...Next.Se oni ne specifas variablon post la ordono Next, Next aŭtomate referas al la plej lasta ordono For.
Se oni specifas alkrementon esti 0, la ordonoj inter For kaj Nextdaŭre ripetiĝos.
Dum la nombrila variablo dekrementas, LibreOffice Basic kontrolas por troo aŭ maltroo. La iteracio ĉesas kiam Counter superas al End (pozitiva Step) aŭ malsuperas al End (negativa Step).
Uzu la ordonon Exit For por eliri la iteracion sen kondiĉe. Tiu ordono devas esti en iteracio For...Next. Uzu la ordonon If...Then por testi la eliran kondiĉon jene:
For...
ordonoj
If condition = True Then Exit For
ordonoj
Next
Noto: En ingitaj iteracioj For...Next , se oni eliras el la iteracio senkondiĉe per Exit For, nur unu iteracio estas interrompita.
Ekzemplo
La jena ekzemplo uzas du ingitajn iteraciojn por ordigi ĉenan tabelon de 10 elementoj ( sEntry() ), komence plenigitaj per diversaj enhavoj:
Sub ExampleSort
Dim sEntry(9) As String
Dim iCount As Integer
Dim iCount2 As Integer
Dim sTemp As String
sEntry(0) = "Jerry"
sEntry(1) = "Patty"
sEntry(2) = "Kurt"
sEntry(3) = "Thomas"
sEntry(4) = "Michael"
sEntry(5) = "David"
sEntry(6) = "Cathy"
sEntry(7) = "Susie"
sEntry(8) = "Edward"
sEntry(9) = "Christine"
For iCount = 0 To 9
For iCount2 = iCount + 1 To 9
If sEntry(iCount) > sEntry(iCount2) Then
sTemp = sEntry(iCount)
sEntry(iCount) = sEntry(iCount2)
sEntry(iCount2) = sTemp
End If
Next iCount2
Next iCount
For iCount = 0 To 9
Print sEntry(iCount)
Next iCount
End Sub