Příkaz For...Next

Určíte, kolikrát se mají opakovat příkazy mezi For...Next.

Syntaxe:

For čítač=začátek To konec [Step krok]

blok příkazů

[Exit For]

blok příkazů

Next [čítač]

Proměnné:

Čítač: Čítači smyčky se na začátku přiřadí hodnota vpravo od rovnítka (začátek). Platné jsou pouze číselné proměnné. Čítač smyčky se zvyšuje nebo snižuje podle proměnné Krok, dokud nedosáhne hodnoty Konec.

Začátek: Číselná proměnná, která určuje počáteční hodnotu počítadla smyčky.

Konec: Číselná proměnná určující konečnou hodnotu počítadla smyčky.

Krok: Nastaví hodnotu, o kterou se zvyšuje nebo snižuje čítač smyčky. Pokud není Krok určen, zvyšuje se čítač o 1. V tom případě musí být Konec větší než Začátek. Pokud chcete čítač snižovat, musí být Konec nižší než Začátek a Krok musí mít zápornou hodnotu.

Smyčka For...Next provádí všechny příkazy ve smyčce po určený počet opakování.

Při snižování nebo zvyšování čítače kontroluje LibreOffice Basic, zda již přesáhlo koncovou hodnotu. Jakmile čítač dosáhne nebo překročí koncovou hodnotu, smyčka automaticky skončí.

Příkazy For...Next je možné vkládat do sebe (vnořovat). Pokud za příkazem Next nezadáte proměnnou, automaticky odkazuje na nejbližší poslední příkaz For.

Pokud určíte krok 0, příkazy mezi For a Next se opakují neustále.

Při snižování či zvyšování čítače kontroluje LibreOffice Basic přetečení nebo podtečení. Smyčka skončí, když Počítadlo překročí Konec (kladný Krok) nebo je nižší než Konec (záporný Krok).

Pro bezpodmínečné ukončení smyčky použijte příkaz Exit For. Tento příkaz musí být ve smyčce For...Next. Pro ukončovací podmínku je možné použít příkaz If...Then:

For...

příkazy

If Podmínka = True Then Exit For

příkazy

Next

Poznámka: Ve vnořených podmínkách For...Next platí, že pokud použijete bezpodmínečné ukončení Exit For, ukončí se jen jedna smyčka.

Příklad

V následujícím příkladě jsou použity dvě vnořené smyčky k seřazení skupiny řetězců s 10 prvky ( sEntry() ), které jsou nejprve vyplněny různým obsahem:

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