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