Màscara Fecha

31/10/2007 - 02:21 por Beneco | Informe spam
Muy buenas a todos de ante mano mil gracias por su valiosa ayuda:
En un Userform con 2 TextBox, TextBox1 para ingresar la fecha de nacimiento
y Textbox 2 para el resultado con el sgte còdigo:
- En el TextBox1:
On Error GoTo Fin
If KeyCode = vbKeyReturn Then TextBox1 = DateDiff("yyyy",
CLng(CDate(TextBox2)), Date)
Fin:

Para la màscar de entrada al estilo de Acces tengo la sgte funciòn:
Function Mascara_Fecha(ByRef TextB As MSForms.TextBox, _
ByRef b_Borrar As Boolean)
Dim n As Byte, nl As Byte, lt As String, max As Byte
With TextB
If .Text = "" Then b_Borrar = False: Exit Function
nl = Len(.Text): lt = Mid(.Text, nl, 1)
Select Case nl
Case Is = 1
If Not IsNumeric(lt) Or Val(lt) > 3 Then .Text = ""
Case Is = 2, Is = 5
If nl = 2 Then max = 31 Else max = 12
If Not IsNumeric(lt) Or _
(Mid(.Text, nl - 1, 1) & lt) > max Or _
Val(Mid(.Text, nl - 1, 1) & lt) < 1 Then
.Text = Left(.Text, nl - 1)
Else
If nl = 5 And Not IsDate(.Text & "/00") Then _
.Text = Left(.Text, nl - 1) Else _
.Text = .Text & "/"
End If
Case Is = 3, Is = 6
If b_Borrar Then .Text = Left(.Text, nl - 2)
Case Is = 4
If Not IsNumeric(lt) Or _
Val(lt) > 1 Then .Text = Left(.Text, nl - 1)
Case Is = 8
If Not IsNumeric(lt) Or (Left(.Text, 2) = _
"29" And Mid(.Text, 4, 2) = "02" And _
Val(Right(.Text, 2)) Mod 4 > 0) Then _
.Text = Left(.Text, 7)
Case Is > 8
.Text = Left(.Text, 8)
Case Else
If Not IsNumeric(lt) Then .Text = Left(.Text, nl - 1)
End Select
End With
b_Borrar = False
End Function

En el TextBox1:
Private Sub TextBox1_Change()
Dim Borrar As Boolean
Mascara_Fecha TextBox1, Borrar
End Sub


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = vbKeyBack Then Borrar = True
End Sub

Ahora bien todo èsto funciona perfectamente el problema es cuando la fecha
de nacimiento es menor a 1929 me arroja error.

Intento modificar la fecha en la configuraciòn regional pero es imposible ya
que èsta opciòn està descativada.

S@lu2..









Beneco

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
31/10/2007 - 03:25 | Informe spam
hola, !

En un Userform con 2 TextBox, TextBox1 para ingresar la fecha de nacimiento y Textbox 2 para el resultado ...
... funciona perfectamente el problema es cuando la fecha de nacimiento es menor a 1929 me arroja error.
Intento modificar la fecha en la configuracion regional pero es imposible ya que esta opcion esta descativada...



la opcion que comentas se modifica haciendo variaciones a la fecha "superior" (en el segundo spin-button)
y considera que solo aplica cuando das entrada a fechas indicando solamente DOS sigitos para el a#o
(prueba indicando los 4 digitos) -?-

saludos,
hector.
Respuesta Responder a este mensaje
#2 Ivan
31/10/2007 - 17:17 | Informe spam
hola,

solo un comentario, aparte de la consulta [respecto a esta creo que el tema va por donde indica Hector: año de 2 o 4
cifras (otro detalle no contemplado en la macro...) pues los de 2 cifras, si no recuerdo mal empiezan a contar a partir
de 1929 ( o 30 no estoy seguro) hasta el 2028 ( o 29)]:

=>>la variable Borrar deberias sacarla del evento Change y declararla a nivel de modulo del formulario

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Bennet
02/11/2007 - 02:20 | Informe spam
"Héctor Miguel" escribió:

hola, !

> En un Userform con 2 TextBox, TextBox1 para ingresar la fecha de nacimiento y Textbox 2 para el resultado ...
> ... funciona perfectamente el problema es cuando la fecha de nacimiento es menor a 1929 me arroja error.
> Intento modificar la fecha en la configuracion regional pero es imposible ya que esta opcion esta descativada...

la opcion que comentas se modifica haciendo variaciones a la fecha "superior" (en el segundo spin-button)
y considera que solo aplica cuando das entrada a fechas indicando solamente DOS sigitos para el a#o
(prueba indicando los 4 digitos) -?-

saludos,
hector.

Hola Hector, disculpa, podrìas ser màs explìcito, cùal es el segundo spin-button.


Gracias..



Respuesta Responder a este mensaje
#4 Héctor Miguel
02/11/2007 - 02:54 | Informe spam
hola, !

... podrias ser mas explicito, caal es el segundo spin-button...



panel de control -> configuracion regional y de idioma
-> opciones regionales -> (boton) personalizar...
-> (apartado) fecha -> (seccion) calendario
-> "cuando se escriba... con dos digitos interpretarlo como ... entre:"
aqui puedes modificar la fecha "mayor/limite/superior"
(tiene unos spin-buttons, para subir y/o bajar la segunda fecha)

saludos,
hector.
Respuesta Responder a este mensaje
#5 Ivan
02/11/2007 - 03:16 | Informe spam
hola,

ahora que ya sabes como cambiar el limite inferior/superior de las
fechas con año de 2 digitos, ten en cuenta que lo que bajes el
inferior lo haces tambien del superior, pudiendote encontrar con el
mismo problema pero a la inversa. Aparte de que si no me equivoco
estos cambion afectaran a todo tu equipo y no solo a ese archivo. Por
no hablar de si usas el archivo en otros pcs ¿iras cambiandoles los
limites al usuario?

creo que lo ideal seria volver al comentaario de Hector: => '(prueba
indicando los 4 digitos) -?- '

por otro lado, y respecto a esto=> 'Ahora bien todo èsto funciona
perfectamente ..'

permiteme dudarlo e insistir en que [o estoy muy equivocado] si no
sacas Borrar del change no creo que trabaje como deberia trabajar (o a
mi se me ha ido la olla)

un saludo
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida