Notifications
Clear all

Data em textbox

4 Posts
2 Usuários
0 Reactions
1,488 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá... tenho uma planilha pra lançamento de contas. Dentro dela criei uma text box pra data.
Usei o seguinte codigo para transferir o valor da data pra planilha ja em formato date.
Dim d As Date
d = UserForm1.Textdata.Value

ActiveCell.Offset(0, 4).Value = d

Porem quando eu digito a data se eu não digitar especificamente "dd/mm/yyyy" ele da erro, Como eu estou fazendo a planilha para outros usuarios tenho que arrumar esse erro. Pensei em 2 soluções mas não sei como fazer no vba. Caso alguem saiba por fafor me ajude.

1- De alguma forma deixar a textbox preenchida ja com " / / " para o usuario apenas preencher com os numeros.

2- Criar alguma proteção para que caso o usuario digite a data sem / o excel o informe que está errado.
Eu consegui fazer isso no valor mas não funcionou com a data.
Protegi a textbox valor para apenas valores numerico com esse codigo.
Private Sub TextValor_Change()

Dim dAmount As Double

If IsNumeric(TextValor) Then
dAmount = TextValor
Else
MsgBox "Valor não numérico! Por favor digite um valor Numerico."
TextValor.SetFocus
End If

Porem não funcionou com data.

 
Postado : 06/10/2010 8:25 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Amigo coloque esse código no evento change da textbox

Private Sub TXTBOX_Change()
If Len(TXTBOX) = 2 Then
TXTBOX = TXTBOX + "/"
TXTBOX.SelStart = 4
End If
If Len(TXTBOX) = 5 Then
TXTBOX = TXTBOX + "/"
TXTBOX.SelStart = 7
End If

End Sub

 
Postado : 06/10/2010 4:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Opa muito obrigado.
Exatamente o que precisava.
Grande Abraço

 
Postado : 06/10/2010 6:13 pm
(@gustavo_ada)
Posts: 12
Active Member
 

esse aqui voce consegue deletar a barra da data

Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

 If KeyAscii = 8 Then
        ' se campo estiver vazio, não faz nada
        If TextBox8.Text = "" Then
            Exit Sub
        End If
        'deleta o número à esquerda do cursor
        TextBox8.Text = Left(TextBox8.Text, Len(TextBox8.Text) - 1)
        TextBox8.SelStart = Len(TextBox8.Text)
    End If
    If Len(TextBox8.Text) = 10 Then
        KeyAscii = 0
        Exit Sub
    End If
    If Len(TextBox8.Text) = TextBox8.SelLength Then
        If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyEscape Then
            Exit Sub
        End If
    End If
    If Not IsNumeric(Chr(KeyAscii)) Then
        KeyAscii = 0
    Else
          If Len(TextBox8) = 2 Or Len(TextBox8) = 5 Then
      TextBox8.Text = TextBox8.Text & "/"
      SendKeys "{End}", True
    End If
End If
End Sub

abrass.

 
Postado : 06/04/2013 8:23 am