Mascara fecha

18/11/2009 - 17:51 por Fernando | Informe spam
Hola a todos,

Como puedo hacer para colocar una mascara en unas celdas de forma que cuando
ingrese 211109, me aparezca 21/11/2009

Gracias por vuestra labor
Fernando

Preguntas similare

Leer las respuestas

#1 AnSanVal
18/11/2009 - 20:23 | Informe spam
Hola Fernando.

Si SIEMPRE vas a entrar 2 dígitos para el día, 2 dígitos para el mes y 2 dígitos para el año, prueba con el siguiente
código VBA en el módulo de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
If Len(Target.Value) = 6 Then
Target.Value = DateSerial(2000 + Right(Target.Value, 2), _
Mid(Target.Value, 3, 2), Left(Target.Value, 2))
Else
Application.Undo
End If
Application.EnableEvents = True
End If
End Sub


Nota: No controla por ejemplo: Meses mayores de 12, días mayores de 31, años fuera de este siglo, etc. Por lo tanto si
entras p.e. 310498, convertirá a 01/05/2098.


Saludos: Antonio.
***************************
"Fernando" escribió en el mensaje
news:
Hola a todos,

Como puedo hacer para colocar una mascara en unas celdas de forma que cuando
ingrese 211109, me aparezca 21/11/2009

Gracias por vuestra labor
Fernando
Respuesta Responder a este mensaje
#2 Fernando
20/11/2009 - 10:07 | Informe spam
Hola Antonio,

El código VBA que me has propuesto funciona bien, pero hay dos cosas:

Al ejecutarlo cambia el formato celda a "fecha", entonces si tienes que
modificar la fecha en esa celda, tienes que volver a poner el formato de
celda en general y entonces ya te deja modificarlo.

Habria alguna posibilidad de no tener que hacer eso y poder modificarlo
directamente?

Muchas gracias por tu ayuda

Fernando

"AnSanVal" escribió:

Hola Fernando.

Si SIEMPRE vas a entrar 2 dígitos para el día, 2 dígitos para el mes y 2 dígitos para el año, prueba con el siguiente
código VBA en el módulo de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
If Len(Target.Value) = 6 Then
Target.Value = DateSerial(2000 + Right(Target.Value, 2), _
Mid(Target.Value, 3, 2), Left(Target.Value, 2))
Else
Application.Undo
End If
Application.EnableEvents = True
End If
End Sub


Nota: No controla por ejemplo: Meses mayores de 12, días mayores de 31, años fuera de este siglo, etc. Por lo tanto si
entras p.e. 310498, convertirá a 01/05/2098.


Saludos: Antonio.
***************************
"Fernando" escribió en el mensaje
news:
> Hola a todos,
>
> Como puedo hacer para colocar una mascara en unas celdas de forma que cuando
> ingrese 211109, me aparezca 21/11/2009
>
> Gracias por vuestra labor
> Fernando


.

Respuesta Responder a este mensaje
#3 AnSanVal
20/11/2009 - 10:35 | Informe spam
"... Al ejecutarlo cambia el formato celda a "fecha", entonces si tienes que
modificar la fecha en esa celda, tienes que volver a poner el formato de
celda en general y entonces ya te deja modificarlo.

Habria alguna posibilidad de no tener que hacer eso y poder modificarlo
directamente?..."

*************************

Hola Fernando.

¿Me pierdo algo?

(Que yo sepa) Para modificar el valor de la celda (sea fecha o no) no hay necesidad de cambiar de formato.


Saludos: Antonio.
Respuesta Responder a este mensaje
#4 Fernando
20/11/2009 - 12:43 | Informe spam
Hola de nuevo,

Haber si te lo se explicar:

Si tienes formato fecha en la celda, no te deja introducir ningún valor, lo
escribes y cuando das al intro desaparece, entonces cambias al formato
general y escribes por ej 201109 y aparece como queremos 20/11/2009 y
automaticamente cambia el formato a fecha, y ya no te deja ni cambiar fecha
ni borrarla, tienes que volver a cambiar el formato de celda a general
aparece 40137 (que es valor de la fecha) e introducir la nueva fecha y
entonces ya vuelve a realizar el prceso

No se si me habre explicado bien, dime algo

Ah! tengo el Excel 2007 (por si afecta)

Un saludo
Fernando

"AnSanVal" escribió:

"... Al ejecutarlo cambia el formato celda a "fecha", entonces si tienes que
modificar la fecha en esa celda, tienes que volver a poner el formato de
celda en general y entonces ya te deja modificarlo.

Habria alguna posibilidad de no tener que hacer eso y poder modificarlo
directamente?..."

*************************

Hola Fernando.

¿Me pierdo algo?

(Que yo sepa) Para modificar el valor de la celda (sea fecha o no) no hay necesidad de cambiar de formato.


Saludos: Antonio.


.

Respuesta Responder a este mensaje
#5 AnSanVal
20/11/2009 - 17:47 | Informe spam
Ahora si te he entendido. ;-)

No le "veo" una salida fácil con este método, quizás sería mejor que controlaras el tema con un Formulario que contenga
un calendario, o también con un calendario directamente en la hoja, de manera que cuando selecciones una celda de la
columna que lleva fechas, te muestra un calendario, y con un clic (más rápido que los 6 caracteres) entras la fecha y se
oculta el calendario.

Por ejemplo en mi equipo (Excel 2007 home) ...
Programador > Controles > Insertar >Más controles > Control Calendar 11.0
... y Copia/Pega el siguiente código en el módulo de la hoja:

Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
Calendar1.Value = Now
Calendar1.Visible = True
Else
Calendar1.Visible = False
End If
End Sub

Saludos: Antonio.
*********************************

"Fernando" escribió en el mensaje
news:
Hola de nuevo,

Haber si te lo se explicar:

Si tienes formato fecha en la celda, no te deja introducir ningún valor, lo
escribes y cuando das al intro desaparece, entonces cambias al formato
general y escribes por ej 201109 y aparece como queremos 20/11/2009 y
automaticamente cambia el formato a fecha, y ya no te deja ni cambiar fecha
ni borrarla, tienes que volver a cambiar el formato de celda a general
aparece 40137 (que es valor de la fecha) e introducir la nueva fecha y
entonces ya vuelve a realizar el prceso

No se si me habre explicado bien, dime algo

Ah! tengo el Excel 2007 (por si afecta)

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