For...Next-uttrykket
Gjentar uttrykket mellom FOR … NEXT-blokka eit bestemt tal gongar.
Syntaks:
FOR teljar=start TO slutt [Steg steg]
uttrykksblokk
[Exit For]
uttrykksblokk
Next [teljar]
Variablar
Teljar: Løkketeljar som i starten får verdien til høgre for likskapsteiknet (start). Berre talvariablar kan brukast her. Løkketeljaren tel oppover eller nedover avhengig av variabelen «steg» til «slutt» er nådd.
Start: Talvariabel som bestemmer startverdien for løkka.
Slutt: Talvariabel som bestemmer sluttverdien for løkka.
Steg: Bestemmer kor mykje løkketeljaren skal auka eller minka for kvar gjennomgang. Viss denne ikkje er sett, vert teljaren auka med 1. Slutt må i tilfelle vera større enn start. Ønskjer du å telja nedover, må slutt vera mindre enn start og steg må ha ein negativ verdi.
FOR … NEXT-løkka gjentar uttrykka inne i sløyfa så mange gongar som er bestemt av parametra.
Når teljaren aukar, vil LibreOffice Basic kontrollera om sluttverdien er nådd og avslutta løkka når teljare går forbi sluttverdien.
Det er mogleg å nøsta FOR … NEXT-uttrykk. Viss du ikkje set inn ein variabel etter NEXT, vil NEXT bruka det næraste FOR-uttrykket.
Viss du set auken til 0, vert uttrykket mellom FOR og NEXT gjentatt kontinuerleg.
Når teljaren tel nedover, vil LibreOffice Basic kontrollera for over- eller underflyt. Sløyfa vert avslutta når teljaren overskrid slutt (positiv stegverdi) eller er mindre enn slutt (negativ stegverdi).
Bruk uttrykket EXIT FOR for å avslutta sløyfa utan at viklåret er nådd. Dette uttrykket må vera inne i FOR … NEXT-sløyfa. Bruk uttrykket IF … THEN for å kontrollera utgangsvilkåra slik:
FOR …
uttrykk
IF vilkår = SANN THEN EXIT FOR
uttrykk
Next
Merk: Viss du går ut av nøsta FOR … NEXT-sløyfer med EXIT FOR før vilkåret er oppfylt, vert berre ei sløyfe utført.
Eksempel
Dette eksemplet brukar to nøsta løkker for å sortera ein strengtabell med 10 element ( sEntry() ) som først vert fylt med innhald:
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