Conteúdo
Índice 🔎︎

# Instrução For...Next

Repete as instruções entre o bloco For...Next um número especificado de vezes.

## Sintaxe:

    For counter=start To end [Step step]
    bloco de instruções
    [Exit For]
    bloco de instruções
    Next [counter]

## Variáveis:

Contador: o contador de ciclos atribuiu inicialmente o valor à direita do sinal de igual (início). Só são válidas as variáveis numéricas. O contador de ciclos aumenta ou diminui de acordo com a variável Passo até que Fim seja transferido.

Início: variável numérica que define o valor inicial no início do ciclo.

Fim: variável numérica que define o valor final ao terminar o ciclo.

Passo: define o valor de referência para aumentar ou diminuir o contador de ciclos. Se Passo não for especificado, o contador de ciclos é incrementado em 1. Neste caso, Fim terá de ser maior do que Início. Se quiser diminuir o Contador, Fim terá de ser menor do que Início e Passo terá de receber um valor negativo.

O ciclo For...Next repete todas as instruções no ciclo durante o número de vezes especificado pelos parâmetros.

À medida que a variável do contador diminui, o LibreOffice Basic verifica se o valor final já foi atingido. Assim que o contador ultrapassa o valor final, o ciclo termina automaticamente.

É possível imbricar instruções For...Next. Se não especificar uma variável a seguir à instrução Next, Next consulta automaticamente a instrução For mais recente.

Se especificar um incremento de 0, as instruções entre For e Next repetem-se continuamente.

Ao contar a variável do contador, o LibreOffice Basic verifica se não ocorre uma ultrapassagem de capacidade ou ultrapassagem de capacidade por defeito. O ciclo termina quando o Contador excede Fim (valor Passo positivo) ou é menor que Fim (valor Passo negativo).

Utilize a instrução Exit For para terminar o ciclo incondicionalmente. Esta instrução terá de estar num ciclo For...Next. Utilize a instrução If...Then para testar a condição de fim como se segue:

For...

instruções

If condição = Verdade Then Exit For

instruções

Next

Nota: Em ciclos imbricados For...Next, se sair de um ciclo incondicionalmente com Exit for, só é terminado um ciclo.

## Exemplo

O seguinte exemplo utiliza dois ciclos imbricados para ordenar uma matriz em cadeia com 10 elementos ( sEntry() ), que são primeiro preenchidos com diversos conteúdos:

    Sub ExampleSort
    Dim sEntry(9) As String
    Dim iCount As Integer
    Dim iCount2 As Integer
    Dim sTemp As String
        sEntry(0) = "João"
        sEntry(1) = "Patrícia"
        sEntry(2) = "Carlos"
        sEntry(3) = "Tomás"
        sEntry(4) = "Miguel"
        sEntry(5) = "David"
        sEntry(6) = "Catarina"
        sEntry(7) = "Susana"
        sEntry(8) = "Eduardo"
        sEntry(9) = "Cristina"
        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