Crear mascara de entrada de datos

02/11/2003 - 21:56 por Adolfo Fernández | Informe spam
Hola Gente

En un UseForm ¿cómo se puede crear una mascara de entrada en un cuadro de
texto? La máscara tiene que simular que se esta metiendo una fecha
(--/--/--) y que despues excel reconozca la fecha claro.
Si no se puede con un cuadro de texto se puede de alguna otra manera?

Un saludo,
Adolfo

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
03/11/2003 - 04:58 | Informe spam
Hola, Adolfo !

... mascara de entrada en un cuadro de texto? ... simular ... una fecha (--/--/--) y que ... excel reconozca [...]



1.- los cuadros de texto [controles MSForms] NO 'manejan' la propiedad InputMask [como en Access] :((
2.- un 'dato-fecha' puede ser 'introducido' en diferentes 'formatos' y Excel puede [intuitivamente] 'interpretarlo bien'
aunque segun los formatos [entrada -userform- y fechas -panel de control-] pudiera 'tratarse' de fechas diferentes

Si no se puede con un cuadro de texto se puede de alguna otra manera?



1.- una [posible] forma seria 'dar formato' al textbox 'en la salida' [evento _Exit] o en el cambio [evento _Change]
2.- otra [posible] solucion seria usar 3 textboxes 'separados' por controles 'label' =>/<= [para simular 'la vista' ../../..]
[podrias usar otros controles 'label' debajo de los textboxes para indicar 'el orden de entrada' =>dd/mm/aa. mm/dd/aa ...]
3.- otra [posible] forma seria usando un control 'calendar' [en el formulario] para seleccionar una fecha [...]

Saludos,
Héctor.
Respuesta Responder a este mensaje
#2 Adolfo Fernández
03/11/2003 - 15:52 | Informe spam
Ante todo muchas gracias, Héctor, aprovechando tu amabilidad, y partiendo de
la base que utilice la segunda opción (la de usar 3 textboxes), una vez que
tenga los tres valores ¿cómo hago para que excel se entere que es una
fecha?, es decir, ¿como les uno?.

Respecto a la opción uno y tres, probare a ver si saco algo en claro, pero
como no ando muy ducho en el tema, creo que aceptare la opción dos como
válida.

Un saludo,
Adolfo
"Héctor Miguel" escribió en el mensaje
news:
Hola, Adolfo !

> ... mascara de entrada en un cuadro de texto? ... simular ... una fecha


(--/--/--) y que ... excel reconozca [...]

1.- los cuadros de texto [controles MSForms] NO 'manejan' la propiedad


InputMask [como en Access] :((
2.- un 'dato-fecha' puede ser 'introducido' en diferentes 'formatos' y


Excel puede [intuitivamente] 'interpretarlo bien'
aunque segun los formatos [entrada -userform- y fechas -panel de


control-] pudiera 'tratarse' de fechas diferentes

> Si no se puede con un cuadro de texto se puede de alguna otra manera?

1.- una [posible] forma seria 'dar formato' al textbox 'en la salida'


[evento _Exit] o en el cambio [evento _Change]
2.- otra [posible] solucion seria usar 3 textboxes 'separados' por


controles 'label' =>/<= [para simular 'la vista' ../../..]
[podrias usar otros controles 'label' debajo de los textboxes para


indicar 'el orden de entrada' =>dd/mm/aa. mm/dd/aa ...]
3.- otra [posible] forma seria usando un control 'calendar' [en el


formulario] para seleccionar una fecha [...]

Saludos,
Héctor.


Respuesta Responder a este mensaje
#3 Héctor Miguel
04/11/2003 - 06:19 | Informe spam
Hola, Adolfo !

... partiendo de ... la segunda opción (la de usar 3 textboxes)
... ¿como hago para que excel se entere que es una fecha?, es decir, ¿como les uno?.



suponiendo que la 'secuencia' de entrada [en los textboxes] fuera: dd/mm/aa
textbox1 = los digitos del dia + textbox2 = los digitos del mes + textbox3 = los digitos del año
podrias 'asignar' a una variable 'su resultado' con la funcion DateSerial(año, mes, dia) [p.e.]
Dim Fecha As Date
Fecha = DateSerial(TextBox3, TextBox2, TextBox1)
=> es importante que 'observes' el orden <
... opcion uno y tres, probare a ver si saco algo en claro, pero ... creo que aceptare la opción dos como valida.



para la opcion uno, suponiendo un solo textbox para indicar la fecha [solo para 'darle vista' al textbox]:
1.- primero 'asegurate' de indicar al usuario la secuencia 'correcta' de entrada de fechas [segun el orden del sistema]
antes de mostrar el formulario 'indica' la secuencia 'apropiada' [suponiendo que existe un control 'label' para ello]
en el codigo de un procedimiento 'normal' y antes de mostrar el formulario [p.e.]
[... ... ...]
Select Case Application.International(xlDateOrder)
Case 0: UserForm1.Label6 = "mm/dd/aa"
Case 1: UserForm1.Label6 = "dd/mm/aa"
Case 2: UserForm1.Label6 = "aa/mm/dd"
End Select
UserForm1.Show
[... ... ...]
en el modulo del formulario en el evento '_Exit' [al salir] del textbox le 'aplicas' el formato de fecha que prefieras [p.e.]
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox4 = Format(TextBox4, "dd"" de ""mmm"" de ""yyyy")
End Sub

para la opcion tres ['tendras que']:
a) agregar un control calendar en la barra de herramientas de controles de vba,
b) insertar el control en el formulario y 'manejar' sus eventos y propiedades
[si te decides por esta opcion y requieres ayuda, ¿comentas?]

Saludos,
Héctor.
Respuesta Responder a este mensaje
#4 Adolfo Fernández
05/11/2003 - 09:33 | Informe spam
Muchas gracias Hector, probare las opciones que me das y si tiengo algún
problema ya te comento.

Un saludo,
Adolfo
"Héctor Miguel" escribió en el mensaje
news:
Hola, Adolfo !

> ... partiendo de ... la segunda opción (la de usar 3 textboxes)
> ... ¿como hago para que excel se entere que es una fecha?, es decir,


¿como les uno?.

suponiendo que la 'secuencia' de entrada [en los textboxes] fuera:


dd/mm/aa
textbox1 = los digitos del dia + textbox2 = los digitos del mes +


textbox3 = los digitos del año
podrias 'asignar' a una variable 'su resultado' con la funcion


DateSerial(año, mes, dia) [p.e.]
Dim Fecha As Date
Fecha = DateSerial(TextBox3, TextBox2, TextBox1)
=> es importante que 'observes' el orden <>
> ... opcion uno y tres, probare a ver si saco algo en claro, pero ...


creo que aceptare la opción dos como valida.

para la opcion uno, suponiendo un solo textbox para indicar la fecha [solo


para 'darle vista' al textbox]:
1.- primero 'asegurate' de indicar al usuario la secuencia 'correcta' de


entrada de fechas [segun el orden del sistema]
antes de mostrar el formulario 'indica' la secuencia 'apropiada'


[suponiendo que existe un control 'label' para ello]
en el codigo de un procedimiento 'normal' y antes de mostrar el


formulario [p.e.]
[... ... ...]
Select Case Application.International(xlDateOrder)
Case 0: UserForm1.Label6 = "mm/dd/aa"
Case 1: UserForm1.Label6 = "dd/mm/aa"
Case 2: UserForm1.Label6 = "aa/mm/dd"
End Select
UserForm1.Show
[... ... ...]
en el modulo del formulario en el evento '_Exit' [al salir] del


textbox le 'aplicas' el formato de fecha que prefieras [p.e.]
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox4 = Format(TextBox4, "dd"" de ""mmm"" de ""yyyy")
End Sub

para la opcion tres ['tendras que']:
a) agregar un control calendar en la barra de herramientas de controles de


vba,
b) insertar el control en el formulario y 'manejar' sus eventos y


propiedades
[si te decides por esta opcion y requieres ayuda, ¿comentas?]

Saludos,
Héctor.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida