For...Next Statement
Toistetaan For...Next -lohkossa olevia lauseita tietty kertamäärä.
Syntaksi:
For Laskuri1=Alku1 To Loppu1 [Step Askel1]
lauselohko1
[Exit For]
lauselohko1
Next [Laskuri1]
Muuttujat:
Laskuri1: silmukkalaskuri, johon sijoitetaan aluksi yhtäsuuruusmerkin oikealla puolella oleva arvo (Alku1). Vain numeeriset muuttujat ovat kelvollisia. Silmukkalaskurin arvo kasvaa tai vähenee muuttujan Askel1 määräämin välein, kunnes Loppu1 ohitetaan.
Alku1: numeerinen muuttuja, joka määrää silmukkalaskurin arvon alussa.
Loppu1: numeerinen muuttuja, joka määrää silmukkalaskurin lopetusarvon.
Askel1: asettaa arvon, jolla silmukkalaskuria kasvatetaan tai vähennetään. Jos Askel1 ei ole määritetty, silmukkalaskuri kasvaa 1:n välein. Tässä tapauksessa, Loppu1 pitää olla suurempi kuin Alku1. Jos Laskuri1 halutaan olevan vähenevä, Loppu1 pitää olla pienempi kuin Alku1 ja Askel1:lle pitää sijoittaa negatiivinen arvo.
For...Next -silmukka toistaa kaikki silmukan lauseet niin monta kertaa kuin asetetut parametrit määräävät.
Kun laskurimuuttujan arvoa muutetaan, LibreOffice Basic tarkistaa, onko lopetusarvo saavutettu. Niin pian kuin laskuri ohittaa lopetusarvon, silmukka päättyy.
For...Next -lauseita voi asettaa sisäkkäin. Jos Next-lausetta seuraavaa muuttujaa ei ole määritetty, Next viittaa aina viimeisimpään For-lauseeseen.
Jos muutosaskel määritetään 0:ksi, välillä For ... Next olevia lauseita suoritetaan loputtomasti.
Kun silmukkalaskurin arvoa lasketaan, LibreOffice Basic tarkistaa ylityksen tai alituksen. Silmukka päättyy, kun Laskuri ylittää Loppu1:n (positiivinen Askel1-arvo) tai on alle Loppu1:n (negatiivinen Askel1-arvo).
Exit For -lausetta käytetään ehdottomaan silmukasta poistumiseen. Tämän lauseen pitää olla For...Next -silmukan sisällä. If...Then -lausetta voi käyttää poistumisehdon testaamiseen seuraavaan tapaan:
For...
lauseet
If ehto = True Then Exit For
lauseet
Next
Sisäkkäisissä For...Next -silmukoissa, jos silmukasta poistutaan ehdottomalla Exit For-lauseella, vain yhdestä silmukasta tullaan ulos.
Esimerkki
Seuraavassa esimerkissä käytetään kahta sisäkkäistä silmukkaa, 10-alkioisen merkkijonotaulukon ( sEntry() ) lajitteluun. Taulukko täytetään aluksi vaihtelevalla aineistolla:
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