Macro para cambiar formato de fecha a dd/mm/aaaa

Hola

Como puedo hacer para cambiar el formato de fecha a día mes año.

El asunto es que ingreso la fecha 10/11/2014 y me la guarda como 11/10/2014 (me cambia el día por mes y el mes por día)

Use este código pero no me funciona.

TextBox5.Value = Format(TextBox5.Value, "dd/mm/yyyy")

Gracias

2 Respuestas

Respuesta
1

Prueba poniendo el código así:

TextBox5.Value = Format(TextBox5.Value, "mm/dd/yyyy")

Otra opción es así:

TextBox5.Value = Cdate(TextBox5.Value)

no funciona ninguna de las dos

la idea es que aparezca la fecha dd/mm/yyyy

En cuál formulario estás trabajando.

La otra opción es que cambies los textbox que tienes para capturar fecha, por otro control, por ejemplo un DTPicker o un Monthview, es más práctico y no tienes que preocuparte por el formato de la fecha o si es una fecha válida, eso lo hace el control.

En el archivo que te envíe

En el userform que tiene por nombre frmmodi

Con el hago modificaciones en los registros. Y ahí es donde esta el problema que luego que hago una modificaciones me cambia las fechas a mm/dd/yyyy.

Cuando las ingreso por primera vez lo hace bien pero cuando modifico se voltean.

Pon el siguiente evento en tu formulario "frmmodi"

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim fec As Date
    fec = TextBox5
    TextBox5 = Format(fec, "dd/mm/yyyy")
End Sub

obviamente en le textbox5 tienes que capturar una fecha válida, ejemplo: 5 de febrero de 2015, tienes que capturar 05/02/2015

Y cuando pases el textbox5 a una celda:

If TextBox5 <> "" Then
    Cells(Fila, "H") = CDate(TextBox5)
End If

fila es un ejemplo, deberás adaptarlo a tu código

Probé colocando el código en diferentes lugares y no funciona, no se si lo hago mal pero no me resulta.

Gracias, de todos modos

Te envié el archivo con el código en el frmmodi

Saludos. Dante Amor

Recuerda valorar la respuesta.

Lo siento pero aquí no me funciona me tira error en la fila negrita

tal vez hay algún conflicto con el resto del código u otra cosa

Private Sub btn_modificar_Click()

If TextBox6 <> "" Then
Cells(Fila, "G") = CDate(TextBox15)
End If

For i = 1 To 24
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim fec As Date
fec = TextBox6
TextBox6 = Format(fec, "dd/mm/yyyy")
End Sub

Gracias

Private Sub btn_modificar_Click()

If TextBox6 <> "" Then
Cells(Fila, "f") = CDate(TextBox6)   ------- error
End If

For i = 1 To 24
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim fec As Date
fec = TextBox6
TextBox6 = Format(fec, "dd/mm/yyyy")
End Sub

Cambia esto

If TextBox6 <> "" Then
Cells(Fila, "f") = CDate(TextBox6)   ------- error
End If

Por esto

If TextBox6 <> "" and isdate(textbox6) Then
Cells(Fila, "f") = CDate(TextBox6)   ------- error
End If

Te recuerdo que debes poner una fecha válida en un textbox6.

El textbox no tiene la capacidad de validad si estás introduciendo una fecha válida, entonces lo tienes que controlar por código.

Recuerda valorar la respuesta

Siempre da error en la misma fila

Este es el código completo para modificar

Donde debe ir el el código

'Actualizar el registro
Private Sub btn_modificar_Click()

If TextBox6 <> "" And IsDate(TextBox6) Then
Cells(Fila, "f") = CDate(TextBox6) - ----- error (error 1004 en tiempo de ejecucion, error definido por la aplicacion o el objeto)
End If


For i = 1 To 24
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value

Next i

Unload Me
End Sub
'
'Cerrar formulario
Private Sub btn_Salir_Click()
Unload Me
End Sub

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim fec As Date
fec = TextBox6
TextBox6 = Format(fec, "dd/mm/yyyy")
End Sub

Private Sub userform_initialize()
For i = 1 To 24
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

Disculpa tanta molestia

Gracias

Pero la variable "Fila" que yo te estoy poniendo es un ejemplo, tú debes poner el número de fila o la variable que tiene el número de fila.

Tu pregunta es: "El asunto es que ingreso la fecha 10/11/2014 y me la guarda como 11/10/2014 (me cambia el día por mes y el mes por día)"

Y eso ya fue contestado, en tu archivo y por este medio, yo solamente te puse el ejemplo de cómo debes pasar la información del textbox a la celda, pero si quieres que revise ese código deberás crear otra pregunta y valorar esta respuesta.

entiendo lo que decir pero siempre

For i = 1 To 24
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value

If TextBox6 <> "" And IsDate(TextBox6) Then
Cells(0, "f") = CDate(TextBox6)
End If

Next i

pongo 0 porque no puedo especificar una fila ya que el dato a modificar puede estar en cualquier fila.

el 24 del for i son los textbox de que esta compuesto cada registro, cada textbox representa una columna en la tabla. (nombre, comunidad, etc.)

la i son los textbox

en este caso el textbox6, su dato esta en la columna f

yo soy inexperto en esto y de ahi la dificultad para resolverlo y te agradezco el tiempo que estas ocupando en esto.

Valora esta respuesta porque te envié el código para el formato de celda.

Crea una nueva pregunta para revisar la siguiente petición

Respuesta

Excel toma las fechas de la configuración regional de windows a la que se accede desde el Panel de Control. Si podes revisar y modificarla, seria lo mejor para que no tengas ese problema en cada libro donde utilices fechas.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas