Dados do Formatar VBA
In this Article
Este tutorial irá demonstrar como formatar datas usando VBA.
Formatar Datas em VBA
Há dois métodos para formatar datas usando VBA.
- A propriedade NumberFormat de Cells / Ranges – Para formatar datas armazenadas nas células
- A função VBA Format – Para formatar datas em VBA (ex. variáveis)
NumberFormat – Datas
O formato padrão do número de uma célula no Excel é Geral. É possível exibir valores como números, texto, datas, percentagens ou moedas, alterando o formato numérico. A propriedade NumberFormat pode ser usada em VBA para definir o formato numérico de datas numa célula ou intervalo.
Nota: Para ver os diferentes formatos de data padrão disponíveis no Excel vá a Página Inicial>Número e verá opções como Data Abreviada, Data Completa e Hora.
Data Abreviada
A opção de formatação de números de data abreviada exibe a data num formato curto e numérico.
O código seguinte irá definir a propriedade NumberFormat da célula A1 para Data Abreviada:
Range("A1").NumberFormat = "dd/mm/yyyy"
Data Completa
A formatação de números de datas completas exibe a data num formato escrito mais longo. O código seguinte irá definir a propriedade NumberFormat da célula A1 para Data Completa:
Range("A1").NumberFormat = "dddd, mmmm dd, yyyy"
Datas Personalizadas
Para ver os códigos de formato de números personalizados que você pode utilizar em VBA para formatar datas, vá a Página Inicial>Número e clique no Lançador da Caixa de Diálogo. Selecione a aba Número e escolha Personalizado.
Você pode selecionar os formatos personalizados incorporados para a sua data ou criar os seus próprios formatos de data definidos pelo usuário. O seguinte código definirá a propriedade .NumberFormat da célula A1 para um formato de data personalizado integrado:
Range("A1").NumberFormat = "mmm-yy"
O resultado é:
O código seguinte definirá a propriedade .NumberFormat da célula A1, para um formato de data personalizado definido pelo usuário:
Range("A1").NumberFormat = "dddd-dd-mmm-yy"
O resultado é:
Ao rever os exemplos pré-construídos do Excel você pode aprender como o NumberFormats deve ser utilizado. Para mais informações, leia a documentação da Microsoft sobre formatos numéricos para datas.
Função VBA Format
Como mencionado acima, o método NumberFormat é apropriado para definir o formato numérico das datas armazenadas em células Excel. Em VBA, você pode utilizar a Função Format para converter datas em strings com determinada formatação de datas.
Você utilizaria a seguinte sintaxe para formatar as datas:
Format(Representação_String, CódigoFormataçãoNúmero) onde:
Representação_String – a sequência de texto que representa a data.
CódigoFormataçãoNúmero – o código de formato numérico que especifica a forma como a data deve ser exibida.
O código seguinte mostra como formatar uma sequência de texto de uma data como formato de data completa:
MsgBox Format("1/1/2010", "dddd, mmmm dd, yyyy")
O resultado é:
Note que a função de formatação utiliza a mesma sintaxe de formatação de data que o NumberFormat acima.
O código seguinte mostra como formatar uma representação de sequência de texto de uma data como formato de data média:
MsgBox Format("09 Outubro 2012", "Medium Date")
O resultado é:
O código seguinte mostra como formatar uma sequência de texto de uma data em um formato definido pelo usuário:
MsgBox Format("09 Outubro 2012", "dddd: dd/mm/yy")
VBA Custom Format Builder
O nosso add-in VBA: AutoMacro contém um Construtor de Formatos Personalizado para o Editor de VBA. Isto permite-lhe definir formatos personalizados e pré-visualizar imediatamente a saída para o seu valor desejado:
O suplemento VBA contém vários outros “Geradores de Código”, uma extensa biblioteca de códigos, e várias outras ferramentas de codificação. É o add-in definitivo para qualquer programador sério de VBA!
Função VBA Format no Access
A função VBA Format Date funciona exatamente da mesma forma em Access VBA e em Excel VBA.
Function ObterFiltroData() As String
'cria uma string para obter informação de 2 campos de data em um formulário no Access
Dim strCampoData As String
If IsNull(Me.txtSData) = False Then
If IsNull(Me.txtEData) = True Then Me.txtEData = Me.txtSData
If strCampoData2 = "" Then
ObterFiltroData = strCampoData & " Entre #" & Format(Me.txtSData, "dd/mm/yyyy") & "# E # " & Format(Me.txtEData, "dd/mm/yyyy") & "#"
End If
End If
End Function