............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Validar Fechas en TextBox

Ver el tema anterior Ver el tema siguiente Ir abajo

Validar Fechas en TextBox

Mensaje por GalileoGali el Miér Dic 31, 2008 8:29 pm

Para probar, este codigo. agradecere ir comentando las falencias que pudieran encontrarse y / u otras variantes o procedimientos que puedan mejorar el intento:
Código:
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim fecha As Date
Dim stFecha As String
Dim arrFecha() As String
With TextBox1
    If .Text = vbNullString Or .Text = "dd/mm/aaaa" Then Exit Sub
    stFecha = .Text
    If Len(stFecha) <> 10 Or Len(stFecha) - Len(Replace(stFecha, "/", "")) <> 2 _
        Or Mid(stFecha, 3, 1) <> "/" Or Mid(stFecha, 6, 1) <> "/" Then
        MsgBox "No se ha consignado una fecha en el formato solicitado: ""dd/mm/aaaa"""
        .Text = vbNullString
        Cancel = True
        Exit Sub
    End If
    ReDim arrFecha(2)
    arrFecha = Split(stFecha, "/")
    On Error Resume Next
    Err.Clear
    fecha = DateSerial(CInt(arrFecha(2)), CInt(arrFecha(1)), CInt(arrFecha(0)))
    If Err.Number <> 0 Then
        MsgBox "No se ha consignado una fecha válida"
        .Text = vbNullString
        Cancel = True
    End If
End With
End Sub
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Text = vbNullString
End Sub
Private Sub UserForm_Initialize()
With TextBox1
    .Text = "dd/mm/aaaa"
    .SelStart = 0
    .SelLength = 10
End With
End Sub

Archivo para descargar:
[Tienes que estar registrado y conectado para ver este vínculo]
ó
[Tienes que estar registrado y conectado para ver este vínculo]

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Validar Fechas en TextBox

Mensaje por Tatayayan el Lun Mayo 02, 2011 10:49 pm

Hola, probé el código y si pongo 63/09/2011 no me da error, agregué:
fecha = DateSerial(CInt(arrFecha(2)), CInt(arrFecha(1)), CInt(arrFecha(0)))
If Day(fecha) <> Day(CDate(TextBox1)) And Month(fecha) <> Month(CDate(TextBox1)) And Year(fecha) <> Year(CDate(TextBox1)) Then
MsgBox "No se ha consignado una fecha en el formato solicitado: ""dd/mm/aaaa""", 64, ""
Exit Sub
End If
If Err.Number <> 0 Then

avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Validar Fechas en TextBox

Mensaje por Tatayayan el Mar Mayo 03, 2011 2:50 pm

No da error al poner 63/09/2011 por que Excel al excedente lo pasa al mes siguiente, asi con los meses; eso sería aprox 02/11/2011
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Validar Fechas en TextBox

Mensaje por Invitado el Dom Oct 23, 2011 8:42 am

en una hermosa
Este código se utiliza en la misma celda
Código:
 Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim DateStr As String
On Error GoTo EndMacro
If Application.Intersect(Target, Range("date")) Is Nothing Then
    Exit Sub
End If
If Target.Cells.Count > 1 Then
    Exit Sub
End If
If Target.Value = "" Then
    Exit Sub
End If
Application.EnableEvents = False
With Target
If .HasFormula = False Then
    Select Case Len(.Formula)
            Case 4
                    DateStr = Left(.Formula, 1) & "/" & _
                    Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
            Case 5
                    DateStr = Left(.Formula, 1) & "/" & _
                            Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
            Case 6
                    DateStr = Left(.Formula, 2) & "/" & _
                            Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
            Case 7
                    DateStr = Left(.Formula, 1) & "/" & _
                            Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
            Case 8
                    DateStr = Left(.Formula, 2) & "/" & _
                            Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
            Case Else
                    Err.Raise 0
    End Select
    .Formula = DateValue(DateStr)
End If
End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "El dato ingresado no resulta ser una Fecha Válida."
Application.EnableEvents = True
End Sub 

Invitado
Invitado


Volver arriba Ir abajo

Re: Validar Fechas en TextBox

Mensaje por Roberto2010 el Sáb Sep 15, 2012 9:06 am

Que buen planteo Gali, siempre estoy atento a la validación de todo tipo de dato y por eso me interesó este post.
Comento que la macro de Invitado es buena cuando se trata de la hoja.
Con respecto a Tatayayan y el código que agregó al suyo soluciona el problema que había encontrado, por otro lado si no me equivoco, él había propuesto en otro foro otro tipo de validación o máscara mejor dicho, al que luego yo retoqué según mis necesidades, aquí lo dejo:
Código:
Private Sub TextBox1_Change()
Select Case Len(TextBox1.Text)
Case Is = 2
TextBox1.Text = TextBox1.Text & "/"
Case Is = 5
TextBox1.Text = TextBox1.Text & "/" & 20
Case Else
End Select
Dia = Mid(UserForm1.TextBox1, 1, 2)
If Dia > 31 Then TextBox1 = ""
Mes = Mid(UserForm1.TextBox1, 4, 2)
If Mes > 12 Then TextBox1.Text = Left(UserForm1.TextBox1, 3)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Año = Mid(UserForm1.TextBox1, 7, 4)
If Año < 2000 Then TextBox1.Text = Left(UserForm1.TextBox1, 6)
If Not IsDate(TextBox1) Then
MsgBox TextBox1 & " Fecha incorrecta, si no modifica quedara la fecha de hoy"
TextBox1 = Date
End If
End Sub
avatar
Roberto2010

Masculino Cantidad de envíos : 76
Edad : 40
Ciudad - Pais : ARGENTINA
Version de Excel : 2003-2007
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Re: Validar Fechas en TextBox

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.