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

Podpořte nás!