none
CONFIGURAR TEXTBOX PARA DATA RRS feed

  • Pergunta

  • Olá caros amigos..saudações a todos.

     

    Gostaria de saber como criar uma sub em VBA no Excel para que ao ser digitado um valor na textbox ele separe para mim com as barras de data?

     

    Ex: eu crio uma userform e coloco uma textbox1. Digito nessa textbox o valor 030308 e após clicar ENTER o valor fique separado como data 03/03/08

     

    Tentei o seguinte :

     

    TextBox1.Value = Format(TextBox1.Value, "dd/mm/yy")

    Digitei o valor 030308 só que o resultado deu 23/12/82

     

    Mais uma vez muito obrigado!!!

    segunda-feira, 3 de março de 2008 13:40

Respostas

  • Outra opção de formatação:

    Code Snippet
    TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value, 3, 2) & "/" & Right(TextBox1.Value, 2))

     

     

    OBS: o problema inicial ocorreu por que o Excel converteu o número serial 030308 no correspondente valor de data.

    Ou seja, o número foi 030308 foi formatado como data.

     

    [ ]s

    segunda-feira, 3 de março de 2008 18:16
  • Dependendo do uso (ou não) posterior da variavel..

    txt1 = Format(txt1.Value, "##/##/####")

    te serviria..
    segunda-feira, 3 de março de 2008 16:03

Todas as Respostas

  • Dependendo do uso (ou não) posterior da variavel..

    txt1 = Format(txt1.Value, "##/##/####")

    te serviria..
    segunda-feira, 3 de março de 2008 16:03
  • Outra opção de formatação:

    Code Snippet
    TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value, 3, 2) & "/" & Right(TextBox1.Value, 2))

     

     

    OBS: o problema inicial ocorreu por que o Excel converteu o número serial 030308 no correspondente valor de data.

    Ou seja, o número foi 030308 foi formatado como data.

     

    [ ]s

    segunda-feira, 3 de março de 2008 18:16
  • Meus amigos:

     

    Mais uma vez vocês vêem me ajudar nas minhas questões rsrsrsrsrs

     

    As duas formas funcionaram corretamente mas a Sub que o Adilson postol ne atendeu melhor, pois a textbox que eu uso para colocar a data é somada com um adicional de 3 dias, ou seja, se eu colocar na textbox a data 030308 ( 03/03/08 ) essa data recebe uma soma de 3 dias e fica assim 06/03/08.

     

    A sub que você postol meu amigo Hideo Kawashima quando tentei somar os 3 dias na data que eu digitei na textbox está dando erro. Mas ela formatou os valores corretamente, só não realizou a soma.

     

    Agradeço a vocês pela grande ajuda!!!

     

    Muito obrigado!!!

     

    terça-feira, 4 de março de 2008 10:23
  • Boa Noite BRAZ CRUZEIRO:

    Estou precisando utilizar o mesmo código para validar data em textbox.

    Entretanto, estou iniciando o aprendizado em programação e não sei aonde, em que local do código devo implementar o procedimento.

    Você poderia me orientar a esse respeito?

    Muito Obrigado pela sua atenção.

    Sucesso!
    quarta-feira, 28 de janeiro de 2009 02:33
  •  Adilson Soledade wrote:

    Outra opção de formatação:

    Code Snippet
    TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value, 3, 2) & "/" & Right(TextBox1.Value, 2))

     

     

    OBS: o problema inicial ocorreu por que o Excel converteu o número serial 030308 no correspondente valor de data.

    Ou seja, o número foi 030308 foi formatado como data.

     

    [ ]s


    Boa Noite ADILSON SOLEDADE:

    Estou tentando formatar um textbox para data e vi sua resposta.

    Implementei seu código; entretanto, gera erro em tempo de execução: erro 13: tipos incompatíveis.

    Você poderia me ajudar a resolver este erro?

    Desde já agradeço.

    Muito Obrigado!
    quinta-feira, 29 de janeiro de 2009 02:04
  • Posta o trecho do seu código que apresentou erro.

     

     

    []'s

     

    quinta-feira, 29 de janeiro de 2009 12:50
  • Bom dia MBFIGUEIREDO:

    Muito obrigado pelo seu interesse.

    Segue abaixo o trecho do código.

    Eu já implementei ele em vários locais (Initialize, change, click, etc...). Sempre apresenta o mesmo erro.

    Pretendo utilizar a data em alguns cálculos.

    Sucesso!

    Private Sub UserForm_Initialize()
    TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value, 3, 2) & "/" & Right(TextBox1.Value, 2))
    End Sub

    quinta-feira, 29 de janeiro de 2009 13:08
  • Olá..

    Use este evento

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
        If IsNumeric(TextBox1) = False Then Exit Sub    
        If Len(TextBox1) = 8 Then  
            TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value,3, 2) & "/" & Right(TextBox1.Value, 2))  
        End If  
    End Sub 

    O código será executado quando o text perder o foco e se o valor conter 8 caracteres... 05082008 (por exemplo)
    Até..
    segunda-feira, 2 de fevereiro de 2009 13:03
  • Caramba, que dificuldade pra fazer uma coisa que parece ser simples.
    quinta-feira, 22 de setembro de 2011 12:37
  • O ano pode ser exibido em 2 ou 4 dígitos, e sua máscara indica para exibir em 2 (yy) em vez de 4 (yyyy). Basta mudar para:

    TextBox1.Value = Format(TextBox1.Value, "dd/mm/yyyy").


    Alexandre Paiva, MCT

    segunda-feira, 20 de março de 2017 17:09
  • Boa tarde Alexandre,

    Uso esse código porém no meu user form quando da algum erro volta para textbox do erro ao retonar ele le novamente o formato ""dd/mm/yyyy" ai da erro tipo ele insere novamente as / e desconfigura o formato:

    ex: /4/2859

    podem me ajudar?

    quinta-feira, 4 de maio de 2017 14:23
  •     If (cp_old <> CDate(atualiza_data.dt_cp.Value)) Then
            Range("G2").ClearContents
            Range("F2").Value = "não"
            Range("G2").Value = CDate(atualiza_data.dt_cp.Value)
        End If
    É preciso fazer o cast antes de inserir o valor, caso contrário ele registra como string, conforme o exemplo acima
    segunda-feira, 8 de maio de 2017 20:29
  • Olá..

    Use este evento

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
        If IsNumeric(TextBox1) = False Then Exit Sub    
        If Len(TextBox1) = 8 Then  
            TextBox1.Value = FormatDateTime(Left(TextBox1.Value, 2) & "/" & Mid(TextBox1.Value,3, 2) & "/" & Right(TextBox1.Value, 2))  
        End If  
    End Sub 

    O código será executado quando o text perder o foco e se o valor conter 8 caracteres... 05082008 (por exemplo)
    Até..

    ola , tudo bem?

     Gostaria que me ajudasse a resolver um problema , usei estes codigos para um projeto que estou realizando, no formulario a data aparece com as barras somente usando enter ou tab, e na planilha vem com a data invertida, como posso corrigir estes detalhes, desde ja agradeco!! Ana

    domingo, 11 de agosto de 2019 22:37
  • GLÓÓÓÓÓÓÓÓÓÓRIAA!!!!! Muito obrigado, uma resposta de 2008 me ajudou agora em 2020. Tá doido, eu tava doido querendo formatar como data e não tava conseguindo e você me ajudou. Algo tão simples fez a diferença pra mim!!!!!
    sábado, 7 de março de 2020 14:24
  • Não sei se entendi oque voce quer, mas se ja conseguiu ótimo, mas uma opção para formatar data na TextBox é colocar este código na TextBox que você vai digitar a data, a barra entra automático.

    Private Sub TextBox5_Change()

    TextBox5.MaxLength = 10
         Select Case KeyAscii
              Case 8
              Case 13: SendKeys "{TAB}"
              Case 48 To 57
                 If TextBox5.SelStart = 2 Then TextBox5.SelText = "/"
                 If TextBox5.SelStart = 5 Then TextBox5.SelText = "/"
              Case Else: KeyAscii = 0
           End Select
           
           If Len(TextBox5) = 2 Then
           TextBox5 = TextBox5 + "/"
           TextBox5.SelStart = 4
           End If
           If Len(TextBox5) = 5 Then
           TextBox5 = TextBox5 + "/"
           TextBox5.SelStart = 7
           End If

           
    End Sub

    segunda-feira, 7 de dezembro de 2020 00:42
  • E na coluna que vai entrar a data, formata a coluna para texto, senão as vezes acontece de inverter a data.

    segunda-feira, 7 de dezembro de 2020 00:47