Conexão,
Não entendi como vc fez. Eu ja fiz o programa formatar o campo em 99/99/9999.
mas se o usuário digitar 99/99/99 o MsgBox Notifica q a data é inválida, porq só tem 99 digitos no ano.
Só nap entendi como vc fez!!!
Segue abaixo o meu código
If Not ((Keyasc >= Asc("0") And _
Keyasc <= Asc("9")) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(OBJ.Text) = 2 Or _
Len(OBJ.Text) = 5 Then
OBJ.Text = OBJ.Text + "/"
OBJ.SelStart = Len(OBJ.Text)
End If
End If
End Function
'*******************************
Private Sub TxtData_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{TAB}"
KeyAscii = 0
End If
'Formata automaticamente a entrada de data
CampoData TxtData, KeyAscii
End Sub
'*******************************
Private Sub TxtData_LostFocus()
' Jesus is Lord
Select Case TestaData(TxtData)
Case Is = "ANO"
MsgBox "Verifique o ANO !", vbCritical, "Data inválida!"
Exit Sub
Case Is = "MES"
MsgBox "Verifique o MÊS !", vbCritical, "Data inválida!"
Exit Sub
Case Is = "DIA"
MsgBox "Verifique o DIA !", vbCritical, "Data inválida!"
Exit Sub
End Select
End Sub
'********************
Public Function TestaData(VerData As String)
Dim xUltimoDiaMes As String
Dim xyAno As Integer
Dim xyMes As Integer
'Testa o Ano
If Mid(VerData, 7, 4) < 1980 Or Mid(VerData, 7, 4) > 2010 Then
TestaData = "ANO" 'False
Exit Function
Else
xyAno = Mid(VerData, 7, 4)
End If
'Testa o Mes
If Mid(VerData, 4, 2) < 1 Or Mid(VerData, 4, 2) > 12 Then
TestaData = "MES" 'False
Exit Function
Else
xyMes = Mid(VerData, 4, 2)
End If
'verifica o ultimo dia do mes da data solicitada
xUltimoDiaMes = Day(DateSerial(xyAno, xyMes + 1, 1) - 1)
'testa o DIA
If Mid(VerData, 1, 2) < 1 Or Mid(VerData, 1, 2) > xUltimoDiaMes Then
TestaData = "DIA" 'False
Exit Function
Else
TestaData = True
End If
End Function