Logo Hardware.com.br
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas

Excel altera data DD/MM/AAAA para MM/DD/AAAA

#1 Por BrunoEvans 02/12/2015 - 16:24
Pessoal, seguinte. Achei um tópico sobre isso no fórum, porem ele é de 2007 e, como as regras pedem para não comentar em tópicos antigos, criei um novo.

Bem, tenho um arquivo em Excel, onde roda um "micro-sistema" com form's para cadastro e consulta no banco Access (mdb). Todos os cadastros são feitos de maneira correta. No banco as datas estão certinhas (dd/mm/aaaa). O problema quando vou atualizar meu "micro-sistema". No form para atualizar, digito a data que quero que seja atualizada e, o Excel esta incertando a data. Por exemplo, quero trazer registros do MDB com data de 02/12/2015. Porem, o form entende como "12/02/2015" e não retorna nenhum valor. Se eu digitar "12/02/2015" ele entende como "02/12/2015" e me retorna os valores certos. Ou seja, ele esta inverto dd/mm/aaaa para mm/dd/aaaa. Li em outro fórum que eu deveria utilizar o DataValue(). (link do outro fórum) mas eu não faço a minima ideia de como fazer isso.


Na primeira parte do código, o form preenche três células dentro do EXCEL. Essas células eu uso para mostra na "aba painel" o período que eu estou mostrando no "micro-sistema". Já na segunda parte (abaixo de "Condição IF (SE)", são feitas as consultas no banco de dados e, onde são atualizadas as tabelas. Nesse momento, o Excel também faz a inversão da data, como citei no primeiro paragrafo.

Segue o código.

Private Sub cmdFiltroOperacao_Click()
'-----------------------------------------------------------------------------------------
' Preenche celula E3 com nome da operação, data de inicio e termino
'-----------------------------------------------------------------------------------------
Dim lngRow As Long
Application.ScreenUpdating = False
Sheets("AUX1&quot.Select 'posiciona o cursor na planilha de cadastro
Range("E3:G3&quot.Select
Selection.ClearContents
Range("E3&quot.Select

ActiveCell.Value = Me.tOperacao.Text
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Me.tInicio.Text
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Me.tTermino.Text
ActiveCell.Offset(0, 1).Activate

'-----------------------------------------------------------------------------------------
' CONDIÇÃO IF (SE)
'-----------------------------------------------------------------------------------------
If Me.tOperacao = "" Or _
Me.tInicio = "" Or _
Me.tTermino = "" Then
MsgBox "Todos os campos são obriatórios!", vbCritical, "ALERTA"
Exit Sub
End If

'-----------------------------------------------------------------------------------------
' Cons_Turmas
'-----------------------------------------------------------------------------------------
Application.ScreenUpdating = False
Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String
Set banco = New ADODB.Recordset
'DEFININDO INSTRUÇÃO A VARIÁVEL
sql = " SELECT * FROM Cons_Turmas "
sql = sql & " WHERE dOperacao LIKE '" & Me.tOperacao.Text & "%' "
sql = sql & " AND Inicio between #" & Me.tInicio.Text & "# And #" & Me.tTermino.Text & "#"


Sheets("ACOES&quot.Select
Range("TAB_TURMAS&quot.Select
Selection.ClearContents
Call DeletLine

'CONECTAR AO BANCO DE DADOS
nConectar.Conectar

'EXECUTAR A SQL

banco.Open sql, nConectar.Conn

'DECLARANDO VARIÁVEL PARA LOCAL QUE RECEBERÁ OS DADOS NA PLANILHA
Dim xls1 As Excel.Worksheet
Set xls1 = Sheets("ACOES&quot
xls1.Range("B6&quot.CopyFromRecordset banco

'DESCONECTAR PARA LIBERAR MEMÓRIA
'nConectar.Desconectar

'-----------------------------------------------------------------------------------------
' Cons_PlanoAcao
'-----------------------------------------------------------------------------------------
Set banco = New ADODB.Recordset
'DEFININDO INSTRUÇÃO A VARIÁVEL
sql = " SELECT * FROM Cons_PlanoAcao "
sql = sql & " WHERE dOperacao LIKE '" & Me.tOperacao.Text & "%' "
sql = sql & " AND Inicio between #" & Me.tInicio.Text & "# And #" & Me.tTermino.Text & "#"

Sheets("PLANO&quot.Select
Range("TAB_PLANO&quot.Select
Selection.ClearContents
Call DeletLine

'CONECTAR AO BANCO DE DADOS
'nConectar.Conectar

'EXECUTAR A SQL

banco.Open sql, nConectar.Conn

'DECLARANDO VARIÁVEL PARA LOCAL QUE RECEBERÁ OS DADOS NA PLANILHA
Dim xls2 As Excel.Worksheet
Set xls2 = Sheets("PLANO&quot
xls2.Range("B6&quot.CopyFromRecordset banco

'DESCONECTAR PARA LIBERAR MEMÓRIA
'nConectar.Desconectar

'-----------------------------------------------------------------------------------------
' Cons_Participantes
'-----------------------------------------------------------------------------------------
Set banco = New ADODB.Recordset
'DEFININDO INSTRUÇÃO A VARIÁVEL
sql = " SELECT * FROM Cons_Participantes "
sql = sql & " WHERE dOperacao LIKE '" & Me.tOperacao.Text & "%' "
sql = sql & " AND dData between #" & Me.tInicio.Text & "# And #" & Me.tTermino.Text & "#"

Sheets("PARTICIPANTES&quot.Select
Range("TAB_OPERADORES&quot.Select
Selection.ClearContents
Call DeletLine

'CONECTAR AO BANCO DE DADOS
'nConectar.Conectar

'EXECUTAR A SQL

banco.Open sql, nConectar.Conn

'DECLARANDO VARIÁVEL PARA LOCAL QUE RECEBERÁ OS DADOS NA PLANILHA
Dim xls3 As Excel.Worksheet
Set xls3 = Sheets("PARTICIPANTES&quot
xls3.Range("B6&quot.CopyFromRecordset banco
Range("B6&quot.Select

'DESCONECTAR PARA LIBERAR MEMÓRIA
'nConectar.Desconectar

'-----------------------------------------------------------------------------------------
' Grafic_Turmas
'-----------------------------------------------------------------------------------------
Set banco = New ADODB.Recordset
'DEFININDO INSTRUÇÃO A VARIÁVEL
sql = " SELECT * FROM Grafic_Turmas "
sql = sql & " WHERE dOperacao LIKE '" & Me.tOperacao.Text & "%' "
sql = sql & " AND Inicio between #" & Me.tInicio.Text & "# And #" & Me.tTermino.Text & "#"

Sheets("GRAFICOS&quot.Select
Range("GraficoTurmas&quot.Select
Selection.ClearContents
Call DeletLine2

'CONECTAR AO BANCO DE DADOS
'nConectar.Conectar

'EXECUTAR A SQL

banco.Open sql, nConectar.Conn

'DECLARANDO VARIÁVEL PARA LOCAL QUE RECEBERÁ OS DADOS NA PLANILHA
Dim xls4 As Excel.Worksheet
Set xls4 = Sheets("GRAFICOS&quot
xls4.Range("A2&quot.CopyFromRecordset banco
Range("A2&quot.Select

'DESCONECTAR PARA LIBERAR MEMÓRIA
'nConectar.Desconectar

'-----------------------------------------------------------------------------------------
' Cons_Grupos
'-----------------------------------------------------------------------------------------
Set banco = New ADODB.Recordset
'DEFININDO INSTRUÇÃO A VARIÁVEL
sql = " SELECT * FROM Cons_Grupos "
sql = sql & " WHERE dOperacao LIKE '" & Me.tOperacao.Text & "%' "
sql = sql & " AND Inicio between #" & Me.tInicio.Text & "# And #" & Me.tTermino.Text & "#"

Sheets("GRUPOS&quot.Select
Range("Grupos&quot.Select
Selection.ClearContents
Call DeletLine2

'CONECTAR AO BANCO DE DADOS
'nConectar.Conectar

'EXECUTAR A SQL

banco.Open sql, nConectar.Conn

'DECLARANDO VARIÁVEL PARA LOCAL QUE RECEBERÁ OS DADOS NA PLANILHA
Dim xls5 As Excel.Worksheet
Set xls5 = Sheets("GRUPOS&quot
xls5.Range("A2&quot.CopyFromRecordset banco
Range("A2&quot.Select

'DESCONECTAR PARA LIBERAR MEMÓRIA

nConectar.Desconectar


'--FIM-DA-SQL-DE-ATUALIZAÇÃO-DAS-TABELAS--------------------------------------------------
Sheets("PAINEL&quot.Select

MsgBox "Arquivo atualizado!", vbInformation, "Atualização"

Unload Me

End Sub
Responder
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#2 Por Marcelo G Pr...
02/12/2015 - 20:43
Ja tentou formatar personalizado MM/DD/AAAA

Vc vai digitar na celula 25/10/2015 e vai aparecer 10/25/2015.

Simples assim

Se quiser formatar no VBA

format(date, "MM/DD/AAAA")
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#7 Por Basole
04/12/2015 - 19:40
@BrunoEvans voce esta fazendo uma consulta de uma consulta existente no banco access.
E como no seu codigo voce está usando "#" (hashtag), a data fica no formato internacional mm/dd/yyyy.
Então o correto é voce formatar seus textbox para Format(TextboxData.Text,"mm/dd/yyyy").
Veja o anexo.

Anexos

Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal