VBA – Função Format

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 6, 2023

Este tutorial demonstrará como usar a função Format.

Função Format

Formatar números com Formatos Predefinidos

A função Format pode converter um número em uma string formatada com formatos numéricos nomeados predefinidos. Esses formatos predefinidos são Currency (moeda), Fixed (fixo), Standard (padrão), Percent (percentual), Scientific (científico), Yes/No (sim/não), True/False (verdadeiro/falso) e On/Off (ativado/desativado).

Sub FormatExemplo_1()

MsgBox Format(1234567.8) 'O resultado é: 1234567,8
'O formato apenas deixa o número como está

MsgBox Format(1234567.8, "Currency") 'O resultado é: R$1.234.567,80
'Currency usa as configurações de moeda do sistema

MsgBox Format(1234567.8, "Fixed") 'O resultado é: 1234567.80
'Fixo: Pelo menos um dígito antes do ponto decimal e
'usa as configurações do sistema para a parte decimal

MsgBox Format(1234567.8, "Standard") 'O resultado é: 1.234.567,80
'Padrão: Separadores de milhares e sistema padrão

MsgBox Format(1234567.8, "Percent") 'O resultado é: 123456780.00%
'Porcentagem, multiplica por 100 com % e sistema padrão.

MsgBox Format(1234567.8, "Scientific") 'O resultado é: 1.23E+06
'Notação científica

MsgBox Format(1234567.8, "Yes/No") 'O resultado é: Sim
'Resultado Não se o número for zero

MsgBox Format(1234567.8, "True/False") 'O resultado é: Verdadeiro
'Falso se o número for igual a zero

MsgBox Format(1234567.8, "On/Off") 'O resultado é: Ativado
'Desativado se o número for zero

End Sub

Formatar Números com Formatos Definidos pelo Usuário

A função Format pode converter um número em uma cadeia de caracteres, formatada em formatos numéricos definidos pelo usuário. 0 (zero) é um espaço reservado para dígitos que exibe um dígito ou zero. # é um espaço reservado para dígitos que exibe um dígito ou nada. Um ponto (.) é o espaço reservado para decimais, % é o espaço reservado para porcentagem e vírgula (,) é o separador de milhares. O texto pode ser adicionado no formato usando aspas duplas (“”) e um único caractere pode ser adicionado se for usado após uma barra invertida (\).

Sub FormatExemplo_2()
MsgBox Format(7.8, "000.00") 'O resultado é: 007,80
MsgBox Format(12347.8356, "000.00") 'O resultado é: 12347,84
MsgBox Format(7.8, "###.##") 'O resultado é: 7,8
MsgBox Format(12347.8356, "###.##") 'O resultado é: 12347,84
MsgBox Format(7.8, "\$.00") 'O resultado é: $7,80
MsgBox Format(1237.835, "ABA0.00") 'O resultado é: ABA1237,84

MsgBox Format(12347.8356, "000.00%") 'O resultado é: 1234783,56%
MsgBox Format(12347.8356, "0.00") 'O resultado é: 12347,84
End Sub

Formatar Números de Acordo com os Valores

A função Format pode ter seções diferentes usando regras de formatação diferentes para números positivos, números negativos, zero e Null. Essas seções são separadas por ponto e vírgula.

Sub FormatExemplo_3()
MsgBox Format(7.8, "000.00;(000.00);\z\e\r\o;nada") 'O resultado é: 007,80
MsgBox Format(-7.8, "000.00;(000.00);\z\e\r\o;nada") 'O resultado é: (007,80)
MsgBox Format(0, "000.00;(000.00);\z\e\r\o;nada") 'O resultado é: zero
MsgBox Format(Null, "000.00;(000.00);\z\e\r\o;nada") 'O resultado é: nothing

End Sub

Formatar Datas com Formatos Predefinidos

A função Format pode formatar datas com diferentes formatos predefinidos. Esses formatos são data longa, média e curta e também hora longa, média e curta.

Sub FormatExemplo_4()
Dim DataEx As Date
DataEx = #4/18/2020 7:35:56 PM#

MsgBox Format(DataEx, "General Date") 'O resultado é: 18/04/2020 19:35:56

MsgBox Format(DataEx, "Long Date") 'O resultado é: sábado, 18 de abril de 2020
MsgBox Format(DataEx, "Medium Date") 'O resultado é: 18/abr/20
MsgBox Format(DataEx, "Short Date") 'O resultado é: 18/04/2020

MsgBox Format(DataEx, "Long Time") 'O resultado é: 19:35:56
MsgBox Format(DataEx, "Medium Time") 'O resultado é: 07:35
MsgBox Format(DataEx, "Short Time") 'O resultado é: 19:35
End Sub

Formatar Datas com Formatos Definidos pelo Usuário

A função Format pode formatar datas com formatos definidos pelo usuário. Caracteres como d, m, y, w, q podem ser usados para criar formatos de data personalizados

Sub FormatExemplo_5()
Dim DataEx As Date
DataEx = #4/18/2020 7:35:56 PM#

MsgBox Format(DataEx, "m/d/yy") 'O resultado é: 4/18/20
MsgBox Format(DataEx, "mm-dd-yy") 'O resultado é: 04-18-20
MsgBox Format(DataEx, "mmm-dd-yy") 'O resultado é: abr-18-20
MsgBox Format(DataEx, "mmmm-dd-yy") 'O resultado é: abril-18-20
MsgBox Format(DataEx, "mm-ddd-yy") 'O resultado é: 04-sáb-20
MsgBox Format(DataEx, "mm-dddd-yy") 'O resultado é: 04-sábado-20

MsgBox Format(DataEx, "y")
'O resultado é: 109
'número do dia no ano 1-366

MsgBox Format(DataEx, "ww")
'O resultado é: 16
'número da semana no ano 1-52

MsgBox Format(DataEx, "q")
'Resultado é: 2
'trimestre no ano 1-4

End Sub

Caracteres como h, n, s e combinações de am, pm podem ser usados para criar formatos de hora personalizados.

Sub FormatExemplo_6()
Dim DataEx As Date
DataEx = #4/18/2020 7:06:05 PM#

MsgBox Format(DataEx, "h:n:s") 'O resultado é: 19:6:5
MsgBox Format(DataEx, "hh:nn:ss") 'O resultado é: 19:06:05

MsgBox Format(DataEx, "hh:nn:ss am/pm") 'O resultado é: 07:06:05 pm
MsgBox Format(DataEx, "hh:nn:ss AM/PM") 'O resultado é: 07:06:05 PM
MsgBox Format(DataEx, "hh:nn:ss a/p") 'O resultado é: 07:06:05 p
MsgBox Format(DataEx, "hh:nn:ss A/P") 'O resultado é: 07:06:05 P
End Sub

Formato para Melhor Legibilidade

A função Format pode formatar cadeias de caracteres ou números para melhorar a legibilidade. @ é um caractere de espaço reservado usado para exibir um caractere ou espaço. & é um caractere de espaço reservado usado para exibir um caractere ou nada. ! pode ser usado para usar espaços reservados de caracteres da esquerda para a direita e < ou > pode ser usado para impor letras maiúsculas ou minúsculas. Pode ser útil na formatação de números de telefone ou outros números grandes sem alterar o valor original

Sub FormatExemplo_7()
Dim StrEx As String
StrEx = "ABCdef"

MsgBox Format(StrEx, "-@@@-@@-@@") 'O resultado é: - AB-Cd-ef
MsgBox Format(StrEx, "-&&&-&-&-&-&&") 'O resultado é: -A-B-C-d-ef
'Começa da direita para a esquerda.

MsgBox Format(StrEx, "-@@@-@@-@@-@@-@@") 'O resultado é: - - -AB-Cd-ef
MsgBox Format(StrEx, "-&&&-&-&-&-&-&-&&") 'O resultado é: ---A-B-C-d-ef
'Começa da direita para a esquerda. Quando não há caracteres, @ adiciona espaços e & não adiciona nada

MsgBox Format(StrEx, "!-@@@-@@-@@-@@-@@") 'O resultado é: -ABC-de-f - - 
MsgBox Format(StrEx, "!-&&&-&&-&-&-&-&&&") 'O resultado é: -ABC-de-f---
'Começa da esquerda para a direita por causa do !

MsgBox Format(StrEx, ">") 'O resultado é: ABCDEF
MsgBox Format(StrEx, "<") 'O resultado é: abcdef

MsgBox Format(1234567890, "@@@-@@@-@@@@") 'O resultado é: 123-456-7890
MsgBox Format(1234567890, "@@@@-@@@-@@@") 'O resultado é: 1234-567-890
End Sub

Padrões de Formatação em Células da Planilha

A função Format pode ser usada no código VBA e também nas células das planilhas. Selecione a célula ou o intervalo de células e siga a entrada de menu Formatar Células > Personalizado). Há muitos formatos definidos pelo usuário e o usuário também pode criar seus próprios formatos personalizados.

menu formatar celulas

Formatar Padrões com Fórmula de Texto

A função de formatação pode alterar diretamente o formato de um valor dentro do código VBA. Também podemos usar a fórmula de texto do Excel para obter o mesmo resultado usando WorksheetFunction.Text

Sub FormatExemplo_8()
MsgBox Format(7.8, "000.00")
'O resultado é: 007,80
MsgBox WorksheetFunction.Text(7.8, "000.00")
'O resultado é: 007.80

MsgBox Format(7.8, "###.##")
'O resultado é: 7,8
MsgBox WorksheetFunction.Text(7.8, "###.##")
'O resultado é: 7.8
End Sub 
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA