Validar textbox para que solo acepte fechas

Un favor antes que nada agradecer por la ayuda que dan para solucionar los problemas bueno el problema es el siguiente en un textbox tengo esto programado

Private Sub Txtnacimiento_Change()
Dim nChar As Long

nChar = Len(Me.Txtnacimiento)
Select Case nChar
Case 2
Me.Txtnacimiento = Me.Txtnacimiento & "/"
Case 5
Me.Txtnacimiento = Me.Txtnacimiento & "/"
End Select

End Sub

Para que acepte solo fechas pero el problema es que quiero validarlo para que acepte el formato fecha por ejemplo cuando ingreso 27/05/202000 y me paso esos ceros o algunos datos más me vota error tengo un botón de comando donde tengo esto programado para guardar los cambios

Dim Fe1 As Date
Dim Servicio As String
Dim Mes As String

UltFila = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row

Servicio = Cbservicio
Mes = Cbmes
Fe1 = Txtnacimiento
If Cbservicio = "" Or Cbmes = "" Then
MsgBox "Por Favor digite todos los datos."
Cbservicio.SetFocus
Exit Sub
End If

Sheets("Hoja1").Cells(UltFila + 1, 1) = Servicio
Sheets("Hoja1").Cells(UltFila + 1, 2) = Mes
Sheets("Hoja1").Cells(UltFila + 1, 7) = Fe1

En que parte puedo colocar la validación para que no me vote error al ingresar más números en la fecha espero puedan ayudarme

2 Respuestas

Respuesta
1

Intente lo siguiente en el evento Exit del textbox con la fecha ponga este código, actualiza en nombre del textbox, en este código el nombre es: txtFecha

    If txtFecha = "" Then
    txtFecha = ""
    Else
        If IsDate(txtFecha) = False Then
        MsgBox "Entered data is not a valid date.", vbInformation, "Invalid Date"
        Cancel = True
        txtFecha = Empty
        Else
            txtFecha = Format(CDate(txtFecha), "dd/mm/yyyy")
        End If
    End If

¿Mucha gracias el ejemplo estuvo muy bueno pero quisiera por favor una consulta más en días y meses funciona bien pero al momento de colocar un año erróneo me lo acepta por ejemplo 3333 me lo acepta 3030 me lo acepta 9041 me lo acepta como se podría solucionar eso? Gracias

Intente con esta macro, estableciendo una fecha máxima, en el ejemplo tiene como máximo al 31/12/2099, puede cambiar este dato a sus necesidades, de igual forma podría implementar una fecha mínima.

    If txtFecha = "" Then
    txtFecha = ""
    Else
        If IsDate(txtFecha) = False Then
            Cancel = True
            txtFecha = Empty
        Else
        Dim fecmax As Date
        fecmax = "31/12/2099"
            If txtFecha > fecmax Then
                MsgBox "Fecha invalida", vbInformation
            Else
                txtFecha = Format(CDate(txtFecha), "dd/mm/yyyy")
            End If
        End If
    End If
Respuesta
2

Revisa si en lugar de textbox puedes incluir el control MonthView1 o DTPicker1, cualquiera de esos controles solamente te permite fechas válidas.

Y lo utilizas así:

Sheets("Hoja1").Cells(UltFila + 1, 7) = MonthView1.value
Sheets("Hoja1").Cells(UltFila + 1, 7) = DTPicker1.Value

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas