como poner una mascara de entrada a una celda

02/01/2006 - 15:37 por cdt | Informe spam
en access se llama mascara a unas reglas de validacion de datos para que solo
se pueda poner un formato concreto. ¿Cómo se llama en excel? o mas
concretamente, ¿Cómo puedo hacer que en una celda sólo se puedan escribir
horas y minutos, en formato hh:mm? que el usuario no tenga ni que poner los
":"
gracias
 

Leer las respuestas

#1 Héctor Miguel
03/01/2006 - 02:09 | Informe spam
hola, 'anonimo/a' !

en access se llama mascara a unas reglas de validacion de datos para que solo se pueda poner un formato concreto.
Cmo se llama en excel? o mas concretamente,
Como puedo hacer que en una celda solo se puedan escribir horas y minutos, en formato hh:mm?
que el usuario no tenga ni que poner los ":"



[hasta donde se] en excel NO hay forma [incorporada] que permita 'enmascarar' las entradas del usuario a fechas/horas debido a...

1) las fechas y horas [en excel] son [realmente] numeros seriales
un entero 'equivale' a un dia
una hora 'es igual' a 1/24
un minuto 'es igual' a 1/24/60 -o- 1/1440 (24×60) [etc.]

2) p.e.: tomando como muestra el valor de: 1.753126 ('casi' dos días)...
los siguientes formatos 'mostrarian' los resultados asociados:
-> Formato: 'Vusualizacion' Notas [sobre los 'enteros' y 'fracciones']:
"h:mm:ss.000" 18:04:30.086 los enteros se 'omiten' =>se 'pierden' -cada- 24 horas< "[h]:mm:ss" 42:04:30 los enteros se 'convierten' a la unidad 'superior' del formato y 'se suman'
"[m]:ss.0" 2524:30.1 las fracciones 'equivalen' a decimas de segundo
"[m]:ss.00" 2524:30.09 las fracciones 'equivalen' a centesimas de segundo
"[m]:ss.000" 2524:30.086 las fracciones 'equivalen' a milesimas de segundo
en resumen; 'estamos hablando' de datos decimales [enteros y fracciones] 'convertidos' a su equivalente en tiempo.
un dato importante seria; saber 'como' seran introducidos tales valores de tiempo ?
a) en 'notacion' decimal? -> para 'representar' 5 minutos, introduces -> 0.00347222222222222 (o =5/1440)
b) en 'notacion' militar? -> para introducir 'directamente' 5 MINUTOS... -> 'hay que' trabajar con codigo :)

3) otro ejemplo, suponiendo que las celdas donde se introduciran los tiempos fuese el rango "A2:A15",
y que te interesear 'representar/convertir' una entrada del usuario al formato de ss.000 [segundos y milesimas]...
-> pega las siguientes lineas en el modulo de codigo de 'esa' hoja:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a2:a15")) Is Nothing Then Exit Sub
If Target = 0 Then Exit Sub
Application.EnableEvents = False
Target = Int(Target / 100000) / 1440 + (Target / 144000000 - (Int(Target / 100000) / 1440)) / 0.6
Application.EnableEvents = True
End Sub

notas: los datos DEBERAN introducirse usando un tipo de 'hora militar' de: "mmssMMM" => minutos_segundos_milesimas
p.e. para 'introducir' un tiempo de: 15.020 (15" 020 mil) introduces -> 15020
para 'introducir' un tiempo de: 30:15.020 (30' 15" 020 mil) introduces -> 3015020
para 'introducir' un tiempo de: 1:30:15.020 (1h 30' 15" 020 mil) introduces -> 9015020 (90' = 1h 30') <= OJO
'dependiendo' de el tiempo que desees 'ver', das formato a las celdas de:
[s].000 -> segundos, milesimas
[m]:ss.000 -> minutos, segundos, milesimas
[h]:mm:ss.000 -> horas, minutos, segundos, milesimas

[obviamente] puedes modificar el ejemplo anterior segun 'la entrada' que vaya a hacer el usuario ;)

si cualquier duda [o informacion adiiconal]... comentas ?
saludos,
hector.

p.d. es probable que te interese utilizar un control DTPicker con entrada de tiempo [en lugar de fechas]

Preguntas similares