O que é?
Em VBA, a estrutura While ... Wend permite que determinadas instruções sejam executadas enquanto uma condição especificada for verdadeira.
Observe a sintaxe desta estrutura:
While [condição] [instruções] Wend
Na estrutura acima, [condição] é uma expressão avaliada antes de cada iteração. Se esta condição é verdadeira, então as instruções [instruções] dentro do constructo são executadas. Ao final do bloco (Wend), [condição] é avaliada novamente, e se for falsa, o laço termina.
Exemplo
No exemplo a seguir, usaremos o constructo While ... Wend para implementar uma versão da função POTÊNCIA do Excel. Nossa função, mPotencia, calculará apenas potências de números naturais a expoentes naturais.
Observe o código desta função:
' A função mPotencia é uma implementação ' da função POTÊNCIA do Excel. Ela utiliza ' a estrutura While ... Wend para realizar ' o número correto de passos necessários ' para o cálculo de uma potência de um ' número natural qualquer. Function mPotencia(base As Integer, exp As Integer) As Long Dim valor As Long valor = base If exp < 1 Or base < 0 Then mFatorial = CVErr(xlErrNum) Else While exp <> 1 valor = valor * base exp = exp - 1 Wend mPotencia = valor End If End Function
A função acima verifica se os argumentos são números inteiros, forçando o tipo de dados Integer na declaração da função. Adicionalmente, se a base for negativa ou o expoente menor que 1, a função devolverá um valor de erro.
A parte principal da função é a seguinte:
While exp <> 1 valor = valor * base exp = exp - 1 Wend
A condição verificada é a seguinte: O valor do expoente é diferente de um? Enquanto a resposta é afirmativa, as instruções valor = valor * base e exp = exp - 1 serão realizadas.
Note que o expoente é necessariamente maior ou igual a 1 no início do While, e esse valor diminui a cada iteração.
Veja a aplicação desta função em uma planilha:


Note que esta função só trabalha com números naturais, de forma que é boa idéia utilizar a função padrão do Excel para cálculo de potências, POTÊNCIA.
Nenhum comentário:
Postar um comentário