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

Preguntas similare

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 :))
Respuesta Responder a este mensaje
#2 sorenkierkegaard
08/10/2006 - 00:32 | Informe spam
Jesús Díaz wrote:
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



Para ingresar sólo con formato de fecha, debes convertir la
información a Date de la siguiente manera:
CDate(Textbox1)

Para que sólo permita ingresar puras fechas introduce lo siguiente:

Private Sub TextBox1_Exit(ByVal Cancelar As MSForms.ReturnBoolean)
If Not IsDate(Me.TextBox1.Value) Then
MsgBox "Ingrese Solo Fechas", vbOKOnly, "Atención"
TextBox1 = Empty
End If
End Sub
Respuesta Responder a este mensaje
#3 sorenkierkegaard
08/10/2006 - 01:10 | Informe spam
Para que el formulario de entrada de fecha tienes que convertir la
información a Date
Ejemplo
CDate(Textbox1)


y para que sólo te permita ingresar puras fechas introduce lo
siguiente en tu código

Private Sub TextBox2_Exit(ByVal Cancelar As MSForms.ReturnBoolean)
If Not IsDate(Me.TextBox1.Value) Then
MsgBox "Ingrese Solo Fechas correctas", vbOKOnly, "Atención"
TextBox1 = Empty
End If
End Sub


Atte: Sören
Respuesta Responder a este mensaje
#4 Jesús Díaz
08/10/2006 - 01:55 | Informe spam
Gracias, creo que empiezo a aclararme. Voy a trabajar en ello. aprovecho para preguntar algo parecido: quiero introducir números que representen porcentajes mediante un control (por ejemplo, si tecleo 9,5 quiero que equivalga a 9,50 %) y que en el mismo control se muestre como porcentaje. Hasta ahora lo he hecho con un textbox y el valor sí lo almacena como porcentaje (la celda receptora ya estaba así formateada), pero no me lo muestra como porcentaje en el textbox.

"Jesús Díaz" escribió en el mensaje news:
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
Respuesta Responder a este mensaje
#5 Héctor Miguel
08/10/2006 - 02:10 | Informe spam
hola, Jesús !

... aprovecho para preguntar algo parecido: quiero introducir numeros que representen porcentajes mediante un control
(por ejemplo, si tecleo 9,5 quiero que equivalga a 9,50 %) y que en el mismo control se muestre como porcentaje.
Hasta ahora lo he hecho con un textbox y el valor si lo almacena como porcentaje (la celda receptora ya estaba así formateada)
pero no me lo muestra como porcentaje en el textbox.



1) es probable que te encuentres con algunos 'imponderables' entre simbolos separadores decimales/miles [configuracion regional] -?-
2) considera que VBA es 'US-Centric' y acepta -solo- el punto como separador decimal :(
3) suponiendo que el 'pase' del textbox a la celda 'formteada' es en otro evento... [p.e. desde un CommandButton1] -?-
prueba con las siguientes instrucciones [en el modulo de codigo del formulario]...

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1 / 100, "0.00%")
End Sub
Private Sub CommandButton1_Click()
[a1] = Left(TextBox1, Len(TextBox1) - 1) / 100
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida