Formato de fecha

08/10/2006 - 00:25 por Jesús Díaz | Informe spam
Hola. Necesito saber como introducir una fecha con formato "dd/mm/aaaa" en una celda mediante un formulario y que solo acepte este tipo de entrada. Gracias por adelantado
 

Leer las respuestas

#1 Héctor Miguel
08/10/2006 - 00:29 | Informe spam
hola, Jesús !

Necesito saber como introducir una fecha con formato "dd/mm/aaaa" en una celda mediante un formulario
y que solo acepte este tipo de entrada...



[creo que] seria mas factible 'condicionar' el tipo de entrada [directa/primeramente] -> desde el formulario -?-
si suponemos que la entrada de fecha [en el formulario] se hace desde un control TextBox [parece el mas 'adecuado'] -?-
te paso unos tips al final del presente :) [otra alternativa es por medio de un control DTPicker en el formulario] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
='partiendo' de que un control textbox 'acepta' todo 'tipo' de entrada por parte del usuario...
-> 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

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 'DTPicker/Calendar' [en el formulario] para seleccionar una fecha [...]

para la opcion uno, suponiendo un solo textbox para indicar la fecha [Y 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 que se muestre el formulario [p.e.]
en el modulo de codigo del formulario ==Private Sub UserForm_Initialize()
Select Case Application.International(xlDateOrder)
Case 0: Label_X = "mm/dd/aa"
Case 1: Label_X = "dd/mm/aa"
Case 2: Label_X = "aa/mm/dd"
End Select
End Sub
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 TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "mm/dd/yyyy")
End Sub

para la opcion dos, suponiendo que la 'secuencia' de entrada [en los textboxes] fuera: mm/dd/aa
textbox1 = los digitos del mes + textbox2 = los digitos del dia + 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, TextBox1, TextBox2)
=> es importante que 'observes' el orden <
para la opcion tres ['tendras que']:
a) agregar un control dtpicker o un control calendar en el cuadro de controles de vba,
b) insertar el control en el formulario y 'manejar' sus eventos y propiedades

como veras, 'trabajar' con fechas desde vba... tiene algunas 'visicitudes' y cosideraciones que se deben tener en cuenta :))

Preguntas similares