Notifications
Clear all

Problema com datas

6 Posts
1 Usuários
0 Reactions
3,764 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa Tarde,
Meu nome é Vinicius, eu estou aprendendo um pouco de VBA através da internet e montei um programinha para controle de gastos, mas estou tendo problemas com o campo data. Pois atrvés do formulário a data é gravada trocada, para corrigir isto eu formatei o campo data para ingles, só que com isso o filtro nçao funciona direito, e também classifica errado.
Queria saber se alguém pode me ajudar. Obrigado.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/04/2011 1:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vinicius,
Por padrão, o VBA trata as datas no formato americano, ou seja, mês/dia/ano. Caso queira vê-lo no formato brasileiro, terá que forçar a formatação. Veja um exemplo:

MsgBox CDate(Format("10/25/2010", "dd/MM/yyyy"))

Em seu Modelo você está usando a Função UCase, que :
Retorna uma Variant (String) que contém a seqüência de caracteres especificada, convertida em letras maiúsculas, em um Textbox aonde é digitaddo Números.

Por padrão o retorno de um Textbox é "Texto", então, uma vez que o Excel armazena de maneira diferente datas e horas, você tem de definir o valor de "TextBox5" como "As Date", ou usar a Função DateValue :
Cells(IndexRow, 7).Value = DateValue(TextBox5) - ou no seu caso :
cadastro(6) = DateValue(Me.TextBox5)

Para formatar o TextBox, podemos usar : CDate(Format(TextBox5.Text, "dd/mm/yyyy")).
No site abaixo temos varias tipos de Funções e seu uso em VBA, sobre a CDate veja :
CDate Function
http://www.techonthenet.com/excel/formulas/cdate.php

Faça as alterações e veja se corre tudo Ok, pois fiquei com uma duvida devido você estar utilizando instruções de BD - DAO, o qual não tenho muita experiência mas já lialgo sobre os formatos de Datas, tanto em DAO como em ADO, alias prefiro o ADO, que está em uma linguagem mais recente e possibilitar trabalhar com mais usuários.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/04/2011 6:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito obrigado pela ajuda Mauro, eu entendi a sua explicação e já tinha visto que a formula CDate seria uma saída para o meu problema, mas como eu sou um pouco leigo no assunto ainda, eu não sei direito aonde inserir a formula no meu código, teria como você me ajudar?Agradeço desde já.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/04/2011 11:44 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vinicius, sem problema, só não posso prometer nada urgente, mas vou ver o que posso fazer.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/04/2011 1:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vinicius, eu não tenho o Excel 2007, então salvei na versão que tenho Excel 2003, mas funcionará no 2007 sem problemas.

Nada como uma analizada mais detalhada, no post anterior comentei sobre você estar utilizando DAo, pelo fato de ter visto as instruções nas rotinas, mas percebi agora que você deve ter coipado essas rotinas de algum outro modelo que utilizava este tipo de BD, e não vi nenhuma funcionalidade das mesmas em seu aplicativo.

Então fiz as seguintes alterações :
Desbilitei as Linhas referentes a chamda ao BD;
'Dim bd As Database
'Dim Rs As Recordset
'Set bd = OpenDatabase(................
'Set Rs = bd.OpenRecordset("PLAN1$", dbOpenDynaset)

Dei uma limpada nas instruções em branco, só atrapalham;
Como eu havia dito, alterei a instrução abaixo para aceitar a Data em Portugues(Br), padrão Americano utilizamos "dd/mm/yyyy)
'cadastro(6) = UCase(Me.TextBox5)
cadastro(6) = CDate(Format(TextBox5.Text, "mm/dd/yyyy"))

Depois destes ajustes nos Formulários, removi toda a Formatação existente no Aplicativo, deixando-a como Padrão Portugues(Br) e Geral, a Data quando lançada já vai com a formatação, não necessitando formatar a célula.
Não mexi na rotina do botão fechar dos formulários, a mesma da erro ao clicar, na instrução para Classificar os dados na Plan3, e como não sei se enviou só um modelo reduzido, não sei se falta alguma parte.

Faça os testes e qualquer duvida retorne.

abraços

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/04/2011 6:27 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito obrigado Mauro, realmente eu fui vendo alguns códigos na internet e adaptava os códigos para o meu "programa",e esse programa que eu enviei é uma versão reduzida mesmo.Eu fiz as adptações que você disse e deu certo, está cadastrando muito bem, só o filtro que ainda não funciona tão bem,ele não lê direito datas com o dia superior a 12, e acaba não classificando direito também.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/04/2011 12:17 pm