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. Sempre que um procedimento se chama a si próprio, mais desse espaço é utilizado. Um procedimento que se auto-intitula é um procedimento recursivo. Um procedimento recursivo que se auto-intitula continuamente eventualmente causa um erro. Por exemplo:
Function RunOut(Maximum)
RunOut = RunOut(Maximum)
End Function
Este erro pode ser menos óbvio quando dois procedimentos se ligam indefinidamente ou quando alguma condição que limita a recursão nunca é cumprida. A recursão tem as suas utilizações. Por exemplo, o procedimento seguinte utiliza uma função recursiva para calcular fatorials.
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
Deve testar o seu procedimento recursivo para se certificar de que não se chama tantas vezes que fica sem memória. Se receber um erro, certifique-se de que o seu procedimento não está a chamar-se indefinidamente. Depois disso, tente conservar a memória ao:
- Eliminar variáveis desnecessárias.
- Utilizar tipos de dados diferentes de Variante.
- A reavaliar a lógica do procedimento. Muitas vezes, pode substituir os ciclos aninhados pela 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.