Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os procedimentos têm uma quantidade limitada de espaço para variáveis. Cada vez que um procedimento chama a si mesmo, mais desse espaço é usado. Um procedimento que se autodenomina é um procedimento recursivo. Um procedimento recursivo que chama continuamente a si mesmo eventualmente causa um erro. Por exemplo:
Function RunOut(Maximum)
RunOut = RunOut(Maximum)
End Function
Esse erro pode ser menos óbvio quando dois procedimentos chamam um ao outro indefinidamente ou quando alguma condição que limita a recursão nunca é atendida. A recursão tem seus usos. Por exemplo, o procedimento a seguir usa uma função recursiva para calcular fatoriais.
Function Factorial (N)
If N <= 1 Then ' Reached end of recursive calls.
Factorial = 1 ' (N = 0) so climb back out of calls.
Else ' Call Factorial again if N > 0.
Factorial = Factorial(N - 1) * N
End If
End Function
Você deve testar seu procedimento recursivo para garantir que ele não se chame tantas vezes a ponto de você ficar sem memória. Se você receber um erro, verifique se o procedimento não está se chamando indefinidamente. Depois disso, tente conservar a memória:
- Eliminando variáveis desnecessárias.
- Usar tipos de dados diferentes de Variant.
- Reavaliando a lógica do procedimento. Muitas vezes, você pode substituir loops aninhados por recursão.
Confira também
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.