Notifications
Clear all

DATA INVERTIDA

23 Posts
4 Usuários
0 Reactions
4,368 Visualizações
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

Senhores,

Tenho um textbox que manda uma data pra uma planilha, só que digito 03/01/2018 e ele cola na planilha 01/03/2018. Não sei mais o que fazer, já tentei todos as opções que encontrei na net e de inicio funciona bem, mas depois volta a inverter a data por mês. Essas duas formulas (1) e (2) (formula abaixo)foi as ultimas que tentei. Se alguém tem uma ideia melhor me diga, por favor.

Private Sub caixa_periodo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(caixa_periodo) = 2 Or Len(caixa_periodo) = 5 Then
        caixa_periodo.Text = caixa_periodo.Text & "/"
        SendKeys "{End}", True
    (1)[Plan1].Columns("K").NumberFormat = "dd/mm/yyyy"
    (2)Selection.NumberFormat = "dd/mm/yyyy"
    
    End If
End Sub

Paulo Cezar

 
Postado : 31/12/2017 9:40 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Paulo Cezar,

Bom dia!

Como você não anexou seu arquivo e nem deu maiores detalhes, vou fazer apenas algumas suposições: digamos que você queira inserir o resultado (a data) na célula "B3". Então você pode utilizar o seguinte código na rotina que faz a inserção na planilha e não nesse rotina KeyPress:

Range ("B3").Value = Format(caixa_periodo.Text, "dd/mm/yyyy")

Por gentileza, ao inserir códigos VBA aqui no fórum, utilize a ferramenta CODE existente logo no início da caixa de mensagens. Isso manterá o fórum devidamente organizado.

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 : 31/12/2017 10:02 am
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

Galera,

Esqueci de dizer pra vocês que os lançamentos são da celula K8:K42 e não numa só celula.

Planilha em anexo.

Paulo Cezar.

 
Postado : 31/12/2017 10:43 am
(@klarc28)
Posts: 971
Prominent Member
 

Favor verificar o anexo

 
Postado : 31/12/2017 10:52 am
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

klarc28,

Eu usei com o FORMAT e deu erro 1004 "ERRO DE DEFINIÇÃO DE APLICATIVO OU DE DEFINIÇÃO DE OBJETO" e usei com o CDATE e de erro 13 "TIPOS INCOMPATÍVEIS" (como se segue:)

Private Sub caixa_periodo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    If Len(caixa_periodo) = 2 Or Len(caixa_periodo) = 5 Then
        caixa_periodo.Text = caixa_periodo.Text & "/"
        SendKeys "{End}", True
    'Cells(Irow, 11).Value = Format(caixa_periodo.Value, "dd/mm/yyyy")
    Cells(Irow, 11).Value = CDate(caixa_periodo.Value)

    End If
End Sub
 
Postado : 31/12/2017 1:03 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Paulo Cezar,

Veja se é assim.

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 : 31/12/2017 3:20 pm
(@klarc28)
Posts: 971
Prominent Member
 

Favor verificar o anexo

 
Postado : 31/12/2017 4:12 pm
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

Muito obrigado a todos desse fórum e grande abraço.

Paulo Cezar.

 
Postado : 01/01/2018 8:20 am
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

Senhores,

Mais uma vez quero aqui agradecer pelo esforço dos integrantes de fórum em atender aos que não tem o pleno conhecimento em VBA, em especial a correção da formula acima citada, que foi de grande ajuda pra mim. Mas, infelizmente ao alterar a mascara do textbox "caixa_período" para o formato data causou um problema na minha planilha. Com certeza vai ser café pequeno pra vocês. É o seguinte, eu tenho duas consultas, uma que detecta a duplicidade na planilha "prestacoes" logo ao digitar a diária e tenho outra consulta quando transfiro essas diárias pra planilha BDDADOS, pois bem, essas consultas não estão funcionando mais. Se possível gostaria que vocês dessem uma olhada pra ver o que fazer.

Obs1.: A planilha é mesma a disposição acima;
Obs2.: Vou dispor a macro abaixo e vou marcar com uma linha pontilhada separando as duas formulas pra ajudar e agilizar.

Private Sub botao_enviar_Click()
Application.ScreenUpdating = False
Dim ul As Long
ul = [Plan4].Range("A" & Rows.Count).End(xlUp).Row
[Plan4].Activate
For i = 2 To ul
If [Plan4].Range("A" & i).Value = InserirDados.ComboBox1.Value Then
If [Plan4].Range("D" & i).Value = InserirDados.caixa_periodo.Value Then
MsgBox "ESSE FUNCIONÁRIO JÁ TEM DIÁRIA NESTA DATA, POR FAVOR VERIFIQUE.", vbExclamation, "Lançamento em Duplicidade"
ComboBox1.SetFocus

[Plan1].Activate
Exit Sub
    Else
ActiveCell.Offset(1, 0).Select
End If
End If
Next i
Application.ScreenUpdating = True

'Duplicidade na planilha "PRESTACOES"

Application.ScreenUpdating = False
Dim ult As Long
ult = [Plan1].Range("B" & Rows.Count).End(xlUp).Row
[Plan1].Activate
For y = 8 To ult
If [Plan1].Range("B" & y).Value = InserirDados.ComboBox1.Value Then
If [Plan1].Range("I" & y).Value = InserirDados.caixa_periodo.Value Then
MsgBox "NOME DE FUNCIONÁRIO DIGITADO DUAS VEZES NESTE RELATÓRIO COM MESMA DATA, FAVOR VERIFICAR.", vbExclamation, "Lançamento em Duplicidade"
ComboBox1.SetFocus

[Plan1].Activate
Exit Sub
    Else
ActiveCell.Offset(1, 0).Select
End If
End If
Next y
Application.ScreenUpdating = True

.........................................................................................................................................

'Cria a variavel linhavazia
Dim Irow As Long

'Confere se o campo nome foi preenchido
If ComboBox1.Value = "" Then
MsgBox ("Campo Nome é obrigatório")
ComboBox1.SetFocus
Exit Sub
Else
End If
'seleciona a aba "dados"
Sheets("prestacoes").Select

With Sheets("prestacoes")

'conta quantas informações foram inseridas na coluna B da aba prestacoes
Irow = .Cells(.Rows.Count, "B").End(xlUp).Row + 1

'Insere informações da aba prestacoes
Cells(Irow, 2).Value = ComboBox1.Value
Cells(Irow, 8).Value = caixa_prestacao.Value
Cells(Irow, 11).Value = Format(caixa_periodo.Value, "mm/dd/yyyy")
Cells(3, 4).Value = Combo_destinatario.Value
Cells(3, 7).Value = Combo_remetente.Value
Cells(61, 7).Value = Combo_responsaveis.Value

End With

If marcar_adiantamento = True Then
Cells(Irow, 9).Value = caixa_prestacao.Value
Cells(Irow, 7).ClearContents

End If

'Volta para a aba MENU
Sheets("prestacoes").Select


caixa_prestacao.Value = ""
caixa_periodo.Value = ""

ComboBox1.SetFocus
marcar_adiantamento = False


If Range("B42").Value <> 0 Then
MsgBox "VOCÊ ACABOU DE DIGITAR NA ULTIMA LINHA DA PLANILHA, FAVOR IMPRIMIR E INICIAR OUTRO RELATÓRIO, SE NESCESSÁRIO.", vbExclamation, "Lançamento em Duplicidade"
ComboBox1.SetFocus


End If

Call limpar_duplicados

End Sub
 
Postado : 02/01/2018 5:50 pm
(@klarc28)
Posts: 971
Prominent Member
 

Você deve explicar o que e onde não está funcionando. Não somos videntes.

 
Postado : 02/01/2018 6:16 pm
(@klarc28)
Posts: 971
Prominent Member
 

Com certeza vai ser café pequeno pra vocês.

Como você sabe? Pode ser algo inacreditavelmente complicado. Não somos deuses.

 
Postado : 02/01/2018 6:21 pm
(@paulocezar)
Posts: 70
Estimable Member
Topic starter
 

Não foi essa minha intenção.

Se digito no userform "inserir dados" o nome e a data por duas vezes no mesmo relatório (planilha prestacoes), a formula acusa a duplicidade e quando digito um nome com determinada data e esses dados já constam na planilha BDDADOS (que é o banco de dados) a formula acusa a duplicidade. Espero ter sido claro, se não, tento novamente com mais detalhes.

Paulo Cezar.

 
Postado : 02/01/2018 9:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

No evento keypress não é, no meu entender, a melhor posição para salvar a data na planilha.
Uma possibilidade e utilizar, por exemplo o envento Exit.
Altere seu evento keypress conforme abaixo

Private Sub caixa_periodo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim dt As Date
    If Len(caixa_periodo) = 2 Or Len(caixa_periodo) = 5 Then
        caixa_periodo.Text = caixa_periodo.Text & "/"
        SendKeys "{End}", True
    End If
End Sub

em adicional inclua a seguinte rotina e teste:

Private Sub caixa_periodo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
dt = CDate(caixa_periodo.Text)
Plan1.Range("A1").Value = dt
End Sub

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

 
Postado : 02/01/2018 10:33 pm
(@klarc28)
Posts: 971
Prominent Member
 

Reinaldo, esse problema já foi resolvido no último anexo postado.

 
Postado : 03/01/2018 4:19 am
(@klarc28)
Posts: 971
Prominent Member
 

Paulo, se você imagina que está falando com gênios, está absurdamente enganado.

Explique o problema como se estivesse falando com a pessoa mais ignorante na face da Terra.

Por exemplo:

No formulário tal, quando seleciono o nome tal, clico no botão tal, acontece tal coisa ou não acontece tal coisa.

 
Postado : 03/01/2018 4:21 am
Página 1 / 2