VBA – Função Format
In this Article
- Função Format
- Formatar números com Formatos Predefinidos
- Formatar Números com Formatos Definidos pelo Usuário
- Formatar Números de Acordo com os Valores
- Formatar Datas com Formatos Predefinidos
- Formatar Datas com Formatos Definidos pelo Usuário
- Formato para Melhor Legibilidade
- Padrões de Formatação em Células da Planilha
- Formatar Padrões com Fórmula de Texto
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.
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