Página 1 de 1

Verificar data válida em um textbox

Enviado: 23 Dez 2015 às 14:44
por Helder
Boa tarde meus amigos, os códigos abaixo utilizo em um projeto meu para configurar a data de aniversário de uma pessoa no textbox. Utilizo a propriedade KeyPress para possibilitar apenas a digitação de números e a colocação das barras de forma correta ##/##/####. A primeira macro é para verificar se depois de digitar a data o mês não é maior que 31 dias, os meses não são maiores que 12 e se o ano não é menos que 1900.

A minha questão é: Alguém aí tem uma função mais completa, para evitar por exemplo a digitação da data 31/02/2015 por exemplo.

Abraços.

Private Sub Txt_Aniversário_Comprador_Change()
If Len(Txt_Aniversário_Comprador.Value) = 10 Then 'Se já tiver digitado os dez dígitos "31/01/2015"

If Left(Txt_Aniversário_Comprador.Value, 2) > 31 Then 'Verifica se digitei número maior que 31
MsgBox "Dia Incorreto", vbInformation, "Cadastro de data inválido"

ElseIf Mid(Txt_Aniversário_Comprador.Value, 4, 2) > 12 Then 'Verifica se o mês é maior que 12
MsgBox "Mês Incorreto", vbInformation, "Cadastro de data inválido"

ElseIf Right(Txt_Aniversário_Comprador.Value, 4) < 1900 Then 'Verifica se o ano é maior que 1900
MsgBox "Ano Incorreto", vbInformation, "Cadastro de data inválido"
End If
End If
End Sub

Private Sub Txt_Aniversário_Comprador_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Formatação da data
Txt_Aniversário_Comprador.MaxLength = 10 '04/02/1985

Select Case KeyAscii
Case 8 'Aceita o Back Space
Case 13: SendKeys "(TAB)" 'Anula o Tab
Case 45 To 58
If Txt_Aniversário_Comprador.SelStart = 2 Then Txt_Aniversário_Comprador.SelText = "/"
If Txt_Aniversário_Comprador.SelStart = 5 Then Txt_Aniversário_Comprador.SelText = "/"
Case Else: KeyAscii = 0 'Ignora os outros caracteres
End Select
End Sub

Verificar data válida em um textbox

Enviado: 24 Dez 2015 às 10:23
por Parkeless
Bom dia!

Eu tenho uma ideia que é meio que uma gambiarra kk, bom, como ninguém respondeu ainda... Dava p/ adaptar isso dentro do seu código, de alguma forma

Você poderia verificar, dentro do VBA, qual é o último dia daquele mês, da mesma forma que se faz com fórmulas no Excel mesmo. Então, comparar com a data inserida pelo usuário, e ver se é maior.

Digamos que o usuário preencheu 31/02/2015:

01/[mês inserido] + 1/[ano] - 1 ---> 01/02+1/2015 - 1 ---> 01/03/2015 - 1---> 28/02/2015

Extrair o dia inserido: Dia_inserido = left("31/02/2015",2) (resultado: 31)
Extrair o dia: Último_dia = left("28/02/2015",2) (resultado: 28)
Código: Selecionar todos
If Dia_inserido > Último_dia then 
    msgbox "Erro: Data inválida!"
    exit sub
End if
Não sei se essa é a melhor forma mas, funciona rs

Verificar data válida em um textbox

Enviado: 25 Dez 2015 às 10:18
por Reinaldo
Pode tambem experimentar o Isdate, assim valida a data como um todo
Algo +/- assim
Código: Selecionar todos
Sub tt()
txtdata = "12/10/2016"
If IsDate(txtdata) = True Then
    MsgBox "OK"
Else
    MsgBox txtdata & " Não é uma data Valida"
End If
End Sub