Funções Round, RoundUp e RoundDown em VBA
In this Article
Arredondamentos em VBA
A função Round do VBA arredonda números para uma quantidade específica de dígitos.
Sintaxe da Função Round do VBA
A sintaxe da função Round no VBA é:
Round(Expressão, [Casas_Decimais]) onde:
- Expressão – O valor ou número a ser arredondado.
- Casas_Decimais (Opcional) – Um número inteiro que especifica o número de casa decimais a serem arredondadas. O valor deve ser maior ou igual a Zero. (>= 0). Se deixado em branco, o valor padrão é utilizado, o que significa que a função arredondará para o número inteiro mais próximo.
Analisando o exemplo abaixo você poderá ver como a função Round do VBA funciona, arredondando para 1 (uma) casa decimal:
Sub Arredondar1()
Msgbox Round(7.25, 1)
End Sub
A MessageBox resultante é:
Arredondar uma Variável no VBA
No exemplo acima, nós inserimos o número a ser arredondado direto na função Round, porém, na prática, geralmente, você iria arredondar uma variável. A seguir veremos um exemplo de arredondamente usando uma variável:
Observação: Utilizamos uma variável Double para armazenar valores decimais.
Sub ArredondarUsandoVariavel()
Dim valor As Double
valor = 7.25
MsgBox "O valor é " & Round(valor, 1)
End Sub
O resultado é:
Arredondando Resultados no VBA
Valor Original | Casas Decimais | Resultado |
---|---|---|
7.25 | 0 | 7 |
7.25 | 1 | 7.2 |
7.25 | 2 | 7.25 |
-7.25 | 1 | -7.2 |
-7.25 | 2 | -7.25 |
Arredondar o Valor da Célula em VBA
Você também pode arredondar o valor da célula diretamente no VBA:
Sub ArredondarCelula()
Range("A1").Value = Round(Range("A1").Value, 2)
End Sub
Função RoundUp (Arredondar para Cima) em VBA
Digamos que você queira arredondar um número para cima usando o VBA, no entanto, não existe uma função interna no VBA que faça o arredondamento para cima, porém, você fazer uma chamada para a Função do Excel RoundUp a partir do seu código VBA:
valorArredCima = Application.WorksheetFunction.RoundUp(valorOriginal, 3)
Funções da Planilha Excel estão disponívels para utilizar no VBA, através do uso do objeto WorksheetFunction. As únicas função dos objeto Worksheet que você não pode chamar são aquelas que já possuem uma função equivalente interna no VBA.
Sintaxe da Função RoundUp da Planilha Excel:
ROUNDUP(Número, Casas_Decimais) onde:
- Número – O número que você gostaria de arredondar pra cima.
- Casas_Decimais – O número de casas decimais que você gostaria de arredondar para o número.
Analisando o exemplo abaixo você poderá ver como acessar a função RoundUp da Planilha Excel no seu código VBA:
Sub ArredondarParaCima()
Dim valorOriginal As Double
Dim valorArredCima As Double
valorOriginal = 7.075711
valorArredCima = Application.WorksheetFunction.RoundUp(valorOriginal , 4)
MsgBox "O valor arredondado para cima é " & valorArredCima
End Sub
O resultado é:
Arredondar para Cima (RoundUp) para o Número Inteiro Mais Próximo
Você pode arredondar para cima para o número inteiro mais próximo, especificando o valor 0 (zero) no número de casas decimais:
Sub RoundUpWhole()
MsgBox Application.WorksheetFunction.RoundUp(7.1, 0)
End Sub
O resultado apresentado é:
Resultados da Função RoundUp
Valor Original | Casas Decimais | Resultado |
---|---|---|
7.075711 | 0 | 8 |
7.075711 | 1 | 7.1 |
7.075711 | 2 | 7.08 |
7.075711 | 3 | 7.076 |
7.075711 | -1 | 10 |
7.075711 | -2 | 100 |
7.075711 | -3 | 1000 |
Função RoundDown (Arredondar para Baixo) no VBA
Digamos que você queira arredondar um número para baixo usando o VBA, porém, também não existe uma função interna equivalente no VBA para arredondar para baixo, dessa forma, novamente, o que você pode fazer é chamar Função do Excel RoundDown a partir do seu código VBA.
Sintaxe da Função do Excel RoundDown:
ROUNDDOWN(Número, Casas_Decimais) onde:
• Número – O número que você gostaria de arredondar para baixo.
• Casas_Decimais – O número de casas decimais que você gostaria de arredondar o número.
Analisemos o exemplo a seguir para que você veja como acessar a Função do Excel RoundDown no seu código VBA:
Sub ArredondarParaBaixo()
Dim valorOriginal As Double
Dim valorArredBaixo As Double
valorOriginal = 5.225193
valorArredBaixo = Application.WorksheetFunction.RoundDown(valorOriginal , 4)
MsgBox "O valor arredondado para baixo é " & valorArredBaixo
End Sub
O resultado é:
Arredondar para Baixo (RoundDown) para o Número Inteiro Mais Próximo
Você pode arredondar para baixo para o número inteiro mais próximo ao especificar o valor 0 (zero) na quantidade de casas decimais:
Sub ArredondarParaBaixoInteiro()
MsgBox Application.WorksheetFunction.RoundDown(7.8, 0)
End Sub
O resultado é:
Resultados da Função RoundDown
Valor Original | Casas Decimais | Resultado |
---|---|---|
5.225193 | 0 | 5 |
5.225193 | 1 | 5.2 |
5.225193 | 2 | 5.22 |
5.225193 | 3 | 5.225 |
5.225193 | -1 | 0 |
5.225193 | -2 | 0 |
5.225193 | -3 | 0 |
Outras Funções de Arredondamento no VBA
Função Ceiling (Teto) – Arredondar para Cima até um Alcance Específico
O VBA não possui uma função equivalente à função Ceiling.Math, então se for necessário arredondar um número para cima até o inteiro mais próximo ou até múltiplo da importância especificada, então você pode chamar a função do Excel Ceiling.Math a partir do seu código VBA.
Sintaxe da função Ceiling.Math do Excel:
CEILING.MATH(Número, [Importância], [Modo]) onde:
- Número – É o número que você gostaria de arredondar para cima.
- Importância (Opcional) – O múltiplo ao qual seu número deve ser arredondado.
- Modo (Opcional) – Controla se números negativos devem ser arredondados se aproximando ou se afastando do zero.
Analisando o exemplo abaixo você poderá ver como acessar a função Ceiling.Math do Excel no seu código VBA:
Sub ArredondarCimaAteImportancia()
Dim valorOriginal As Double
Dim ceilingmathValor As Double
valorOriginal = 4.1221
ceilingmathValor = Application.WorksheetFunction.Ceiling_Math(valorOriginal, 5)
MsgBox "O valor é " & ceilingmathValor
End Sub
O resultado é:
Resultados ao Arredondar para Cima até uma Importância Específica
Valor Original | Importância | Modo | Resultado |
---|---|---|---|
4.1221 | 5 | ||
4.1221 | 3 | 6 | |
4.1221 | 50 | 50 | |
-4.1221 | 3 | -3 | |
-4.1221 | 3 | -1 | -6 |
VBA Floor – Arredondar para Baixo até um Alcance Específico
O VBA também não possui um equivalente a função Floor.Math. Entretanto, mais uma vez, se você precisa arredondar um número para baixo para o inteiro mais próximo ou para múltiplo de importância mais próximo, então você pode chamar a Função do Excel Floor.Math a partir do VBA.
Sintaxe da Função do Excel Floor.Math:
FLOOR.MATH(Número, [Importância], [Modo]) onde:
• Número O número que você gostaria de arredondar para baixo.
• Importância (Opcional) – O múltiplo para o qual você quer que o número seja arredondado.
• Modo (Opcional) – Controla se números negativos são arredondados se aproximando ou se afastando do zero.
Analisemos o exemplo a seguir onde você poderá ver como acessar a Função do Excel Floor.Math no seu código VBA:
Sub ArredondarBaixoAteImportancia()
Dim valorOriginal As Double
Dim floormathValor As Double
valorOriginal = 4.55555559
floormathValor = Application.WorksheetFunction.Floor_Math(valorOriginal, 2)
MsgBox "O valor é " & floormathValor
End Sub
O resultado é:
Resultados ao Arredondar para Baixo até uma Importância Específica
Valor Original | Importância | Modo | Resultado |
---|---|---|---|
4.55555559 | 4 | ||
4.55555559 | 3 | 3 | |
4.55555559 | 50 | 0 | |
-4.55555559 | 3 | -6 | |
-4.55555559 | 3 | -1 | -3 |