O que é?
Em VBA, a instrução For ... Next repete uma mesma ação por um número de vezes definido pelo usuário.
Observe sua estrutura:
For [variável] = [valor inicial] To [valor final] [código] Next
[variável] é uma variável numérica qualquer, previamente declarada ou não. No início da execução desta instrução, ela assume o valor dado por [valor inicial]. A cada iteração, as seguintes ações ocorrem:
- Se o valor de [variável] é maior que [valor final], a instrução For ... Next é encerrada, e a execução do código fora desta estrutura continua;
- As instruções correspondentes a [código] são executadas;
- O valor de [variável] é acrescido de um.
Exemplo
Neste exemplo, usaremos a estrutura For ... Next para realizar uma implementação da função FATORIAL. A definição desta função é a seguinte:
- Se x é um número natural diferente de zero, FATORIAL(x) = FATORIAL(x - 1);
- Para x = 0, definimos FATORIAL(0) = 1.
Note que a definição acima é recursiva, de forma que podemos reescrevê-la como FATORIAL(x) = x · (x - 1) · (x - 2) · (...) · 2 · 1, para um x natural qualquer.
Para implementar esta função, podemos utilizar a estrutura For ... Next. Observe o código:
' A função mFatorial é uma implementação ' da função FATORIAL do Excel. Ela utiliza ' a estrutura For ... Next para controlar ' o número de passos necessários para ' calcular o fatorial. Function mFatorial(x As Integer) As Long Dim contador As Integer Dim total As Long total = 1 If x < 0 Then mFatorial = CVErr(xlErrNum) Else For contador = 1 To x total = total * contador Next mFatorial = total End If End Function
A variável contador vai abrigar o contador que percorre os números entre 1 e o valor de entrada, x. Já a variáveltotal mantém o subtotal calculado em cada passo da função.
Esta função devolve um valor de erro caso seu valor de entrada seja um inteiro negativo, uma vez que a função só está definida para números naturais. Isto é feito na instrução mFatorial = CVErr(xlErrNum).
A parte importante deste programa é o laço de repetição (também chamado loop). Ele será executado exatamentex vezes. Observe:
For contador = 1 To x total = total * contador Next
O valor de contador começa em 1 e percorre todos os naturais até x A cada passo, o total (que começa em 1) é multiplicado pelo valor do contador. Por exemplo, se o valor de entrada fosse x = 4, teríamos a seguinte seqüência:
- O valor de contador começa em 1, que é menor ou igual a x (4). O bloco será executado, portanto. Neste passo, a variável total recebe 1 · 1, ou seja, 1;
- O valor de contador é 2, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 1 · 2, ou seja, 2;
- O valor de contador é 3, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 2 · 3, ou seja, 6;
- O valor de contador é 4, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 6 · 4, ou seja, 24;
- O valor de contador é 5. O bloco For ... Next é encerrado.
Em seguida, a função mFatorial encerra sua execução e devolve o valor obtido, 24.
Veja a aplicação da função mFatorial em uma planilha:


Nenhum comentário:
Postar um comentário