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