Olá, Kaleo
O Brunoxro tem razão, a função de planilha ARRED faz arredondamento que vc deseja, prá cima, quando o algarismo a abandonar é o 5 não seguido por mais nenhum algarismo significativo.
Por outro lado, o algoritmo da função Round do VBA usa o método do "Arredondamento do Banqueiro" (banker's rounding) ou "Arredondamento para números pares" que no meu entendimento é um algoritmo mais correto (ou mais justo), pois equilibra a quantidade de arredondamentos para cima e para baixo quando o valor está exatamente no meio. (Ex.: cinquenta centavos fica exatamente no meio entre zero e um real, então por que razão sempre arredondar R$ 0,50 para R$ 1,00?). Além dos bancos, é inclusive é a metodologia utilizada pelo IBGE (Resolução nº. 886/66). Nessa técnica, caso o algarismo a abandonar seja o 5 não seguido por mais nenhum algarismo significativo, verifica o algarismo anterior. Se for par, permanece. Se for ímpar, aumenta um. Então o algarismo a permanecer sempre será par.
Para usar a função de planilha ARRED no VBA, use o método Round do objeto WorksheetFunction:
Sub DifArredond()
'Mostra as diferenças entre o Arredondamento do Banqueiro (VBA.Round)
' e da função de planilha ARRED (Round)
Const x As Double = 1.765
Debug.Print Math.Round(x, 2), Application.WorksheetFunction.Round(x, 2)
'Resultado: 1,76 1,77
End Sub
Postado : 23/10/2016 8:30 pm