Supondo que o nome da TextBox que receberá a data é txt_vencimento temos o seguinte código:
- O Procedimento KeyPress formatará o campo para que ao digitar sejam colocada as barras e o campo tenha o tamanho correto... se for adaptar ao seu código não esqueça de trocar todos os nomes de objetos txt_vencimento que aparece no código pelo nome da sua TextBox.
Private Sub txt_vencimento_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
txt_vencimento.MaxLength = 10 '10/10/2014
Select Case KeyAscii
Case 8 'Aceita o BACK SPACE
Case 13: SendKeys "{TAB}" 'Emula o TAB
Case 48 To 57
If txt_vencimento.SelStart = 2 Then txt_vencimento.SelText = "/"
If txt_vencimento.SelStart = 5 Then txt_vencimento.SelText = "/"
Case Else: KeyAscii = 0 'Ignora os outros caracteres
End Select
End Sub
Select Case KeyAscii
Case 8 'Aceita o BACK SPACE
Case 13: SendKeys "{TAB}" 'Emula o TAB
Case 48 To 57
If txt_vencimento.SelStart = 2 Then txt_vencimento.SelText = "/"
If txt_vencimento.SelStart = 5 Then txt_vencimento.SelText = "/"
Case Else: KeyAscii = 0 'Ignora os outros caracteres
End Select
End Sub
- No procedimento AfterUpdate será feito o teste para verificar se o valor do dia esta entre 1 e 31, se o valor do mês esta entre 1 e 12 e também se a data digitada não é menor que a data atual, pois como se trata de um campo de vencimento não podemos ter uma data anterior.
Private Sub txt_vencimento_AfterUpdate()
Dim data As Date
data = Me.txt_vencimento
data = Me.txt_vencimento
If Left(Me.txt_vencimento, 2) > 31 Then
MsgBox "Data preenchida de forma incorreta, dia inválido", vbExclamation, "Erro Data"
Me.txt_vencimento = ""
ElseIf Right(Left(Me.txt_vencimento, 5), 2) > 12 Then
MsgBox "Data preenchida de forma incorreta, mês inválido", vbExclamation, "Erro Data"
Me.txt_vencimento = ""
ElseIf data < Now Then
MsgBox "A data deve ser maior que hoje, cadastro não permitido", vbExclamation, "Erro Data"
Me.txt_vencimento = ""
End If
End Sub
Right(Left(Me.txt_vencimento, 5), 2)
Supondo que tenha sido digitado a data 25/12/2014
O comando Right irá retornar os 2 caracteres da direita para esquerda que estiver contido dentro dele...
Como dentro do Right temos um Left... vamos descobrir o que o Left retorna para entender o código.
Left(Me.txt_vencimento, 5) esta retornando os 5 primeiros caracteres ou valores do conteúdo da caixa de texto txt_vencimento, ou seja 25/12.
Dessa forma o Right estará retornando o valore 12, pois retorna os 2 caracteres da direita para esquerda.
Significa que quando digitar o segundo caractere será inserido a /
Nenhum comentário:
Postar um comentário