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
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
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.
Favor verificar o anexo
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
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
Favor verificar o anexo
Muito obrigado a todos desse fórum e grande abraço.
Paulo Cezar.
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
Você deve explicar o que e onde não está funcionando. Não somos videntes.
Com certeza vai ser café pequeno pra vocês.
Como você sabe? Pode ser algo inacreditavelmente complicado. Não somos deuses.
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.
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
Reinaldo, esse problema já foi resolvido no último anexo postado.
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.