VBA RoundUp, arredondando valores decimais para um valor inteiro acima.

No VBA temos a seguinte característica: ao tentar arredondar um número decimal para um inteiro utilizando a função nativa Round, se a parte decimal for menor que 5 o número é arredondado para baixo, caso contrário o número é arredondado para cima. Veja exemplos executados na janela imediata:

?round(3.33) 3 ?round(3.49) 3
?Round(3.5)
4
?round(3.500000001)
4
 

Mas e se quisermos garantir que o número sempre será arredondado para cima? Neste caso, a dica é utilizar-se  da característica da função int() para números negativos. Veja exemplos executados na janela imediata:

?int(-1.33) -2
?int(-1.00000000001) -2 ?int(-1.99) -2
 

Neste caso, podemos montar a seguinte função:

Function RoundUp(ByVal value As Double) As Long
   If value > 0 Then value = value * -1
   value = Int(value)
   value = Abs(value)
   RoundUp = value
End Function

Testes executados na janela imediata:

?RoundUp(1.33) 2
?RoundUp(1.000000000000001) 2 ?RoundUp(1.99) 2
 

Consulte também: http://www.bettersolutions.com/vba/VKV933/QI912022028.htm

Veja outros posts sobre VBA.

Esta entrada foi publicada em Visual Basic 6.0 e VBA com as etiquetas , , , . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s