Notifications
Clear all

Formatar data em formulário

10 Posts
4 Usuários
0 Reactions
1,584 Visualizações
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Boa tarde pessoal,

Estou com o seguinte problema:

- Eu tenho um formulário que carrega informações de uma planilha, e uma destas informações é a data em que o rigistro foi lançado, porém, as vezes a formatação de data no formulário aparece de forma incorreta. Ex: O desejado é que o formato de data seja dd/mm/aaaa. Porém, em alguns casos o formato aparece como mm/dd/aaaa, o que confunde os usuários.

Por este motivo, eu gostaria de pedir a ajuda de vocês para saber como faço para formatar este campo para que o formato de data seja sempre dd/mm/aaaa.

Desde já obrigado.

 
Postado : 25/06/2015 11:56 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

carloshvb

Boa Tarde!

Coloque no Evento Exit da caixa de texto onde é entrada a data, o seguinte código:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = Format(Range("D3").Value, "dd/mm/yyyy")
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/06/2015 12:41 pm
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Olá Wagner,

Não entendi muito bem, este código seria para quando vou inserir a data no formulário de registro?
Se for este o caso, a data é coletada automaticamente, não existe entrada por usuário.
Outra coisa, os dados na planilha estão formatados corretamente, o problema é quando eu puxo no formulário, só ai que a formatação é perdida, é na hora de puxar os dados que preciso formatar a data no textbox.

Att, Carlos

 
Postado : 26/06/2015 7:27 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Geralmente vejo este problema quando uma célula é alimentada com uma data inserida num textbox...
Sugiro tentar adaptar o seguinte código no momento de input do seu textbox:

TextBox1.Value = Format(CDate(CLng(Excel.Range("A1").Value)), "dd/mm/yyyy")

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 26/06/2015 10:22 am
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Bom dia pessoal,

Obrigado pelas respostas, mas descobri que meu problema é um pouco mais embaixo.

As datas estão sendo gravadas corretamente, e quando faço a pesquisa tudo ocorre bem.
Meu problema real ocorre pois após fazer a pesquisa eu tenho que gerar uma planilha temporaria com os dados da pesquisa, é na hora de gerar essa planilha que o problema com as datas ocorre e para todas as datas com o dia menor que 10, o dia e o mês trocam de posição.

Segue o código que gera a planilha temporária:

Private Sub PlanTmp()
    Dim iLin As Integer
    Dim rgCellInicio As Range
    Dim wsRelat As Worksheet
    Dim UltimaLinha As Long
    
    Set wsRelat = ThisWorkbook.Worksheets(NomePlanRelatorio)

    UltimaLinha = wsRelat.UsedRange.Rows.Count
    
    wsRelat.Range("A2:" & "S" & UltimaLinha).ClearContents
    
    With wsRelat
        For I = 1 To lstLista.ListItems.Count
            .Cells(I + 1, 1) = lstLista.ListItems(I).Text
            .Cells(I + 1, 2) = lstLista.ListItems(I).SubItems(1)
            .Cells(I + 1, 3) = lstLista.ListItems(I).SubItems(2)
            .Cells(I + 1, 4) = lstLista.ListItems(I).SubItems(3)
            .Cells(I + 1, 5) = lstLista.ListItems(I).SubItems(4)
            .Cells(I + 1, 6) = lstLista.ListItems(I).SubItems(5)
            .Cells(I + 1, 7) = lstLista.ListItems(I).SubItems(6)
            .Cells(I + 1, 8) = lstLista.ListItems(I).SubItems(7)
            .Cells(I + 1, 9) = lstLista.ListItems(I).SubItems(8)
            .Cells(I + 1, 10) = lstLista.ListItems(I).SubItems(9)
            .Cells(I + 1, 11) = lstLista.ListItems(I).SubItems(10)
            .Cells(I + 1, 12) = lstLista.ListItems(I).SubItems(11)
            .Cells(I + 1, 13) = lstLista.ListItems(I).SubItems(12)
            .Cells(I + 1, 14) = lstLista.ListItems(I).SubItems(13)
            .Cells(I + 1, 15) = lstLista.ListItems(I).SubItems(14)
            .Cells(I + 1, 16) = lstLista.ListItems(I).SubItems(15)
            .Cells(I + 1, 17) = lstLista.ListItems(I).SubItems(16)
            .Cells(I + 1, 18) = lstLista.ListItems(I).SubItems(17)
            .Cells(I + 1, 19) = lstLista.ListItems(I).SubItems(18)
        Next
    End With
End Sub

O codigo que copia a data é este:

 .Cells(I + 1, 6) = lstLista.ListItems(I).SubItems(5)

Neste caso, meu problema ocorre somente quando tenho que usar essa planilha temporária, tem como corrigir isso e fazer a copia das datas ocorrer corretamente.

Obrigado

 
Postado : 30/06/2015 6:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O codigo que copia a data é este:

 .Cells(I + 1, 6) = lstLista.ListItems(I).SubItems(5)

Troque pela linha abaixo e faça os testes :

.Cells(I + 1, 6)  = Format(lstLista.ListItems(I).SubItems(5) , "dd/mm/yyyy"))

[]s

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

 
Postado : 30/06/2015 8:48 am
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Bom dia pessal,

Mauro, obrigado pela sugestão, mas não deu certo, o novo código só deu erro infelizmente, será que isso pode ser pelo fato de estar copiando de uma listview?

 
Postado : 01/07/2015 5:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia pessal,

Mauro, obrigado pela sugestão, mas não deu certo, o novo código só deu erro infelizmente, será que isso pode ser pelo fato de estar copiando de uma listview?

Desde que os dados contidos em "ListItems(I).SubItems(5)" sejam datas, não tem problemas de estar copiando do ListView :
Tente :

.Cells(I + 1, 6)  = Format(CDate(lstLista.ListItems(I).SubItems(5) , "dd/mm/yyyy")))

[]s

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

 
Postado : 01/07/2015 7:28 am
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Infelizmente, o código também não funcionou...

 
Postado : 02/07/2015 11:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Infelizmente, o código também não funcionou...

Altere para :

.Cells(I + 1, 6)  = Format(CDate(lstLista.ListItems(I).SubItems(5) , "mm/dd/yyyy")))

Se ainda não der certo, o ideal é anexar um modelo reduzido.

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

 
Postado : 02/07/2015 9:55 pm