¿Cómo configurar el formato de fecha al insertar manualmente la fecha en Excel, sin cambiar la configuración regional?

¿Cómo configurar el formato de fecha al insertar manualmente la fecha en Excel, sin cambiar la configuración regional?

En mi localidad, la fecha se inserta como dd/mm/aaaa o variaciones de eso (incluido dd-mm-aa). Hice un formulario de Excel (en un archivo de Excel normal), ya formateado para mostrar la fecha como dd/mm/aaaa, pero cuando escribí "04/05/2015" se mostrará como "05/04/2015". Sé que esto se puede resolver cambiando la configuración regional a mi configuración local, pero necesito distribuir este formulario a muchas personas sin conocimiento sobre cómo cambiar la configuración regional y asumiendo que nadie puede enseñar cómo hacerlo, de ahí mi pregunta:

¿Hay alguna forma de ingresar "04/05/2015" y ser reconocido como "5 de abril de 2015" sin tener que cambiar la configuración regional?

Nota adicional: cuando me refiero a "4 15 de mayo" (escrito 5/4/15), Excel lo reconocerá como "5 15 de abril" porque Excel toma la entrada en formato "dd/mm/aa". Necesito cambiar el comportamiento predeterminado de Excel para que sea "dd/mm/aaaa"ya que esta es la forma en que los usuarios ingresarán.

Si es posible, la configuración también debe incluirse/incrustarse en el archivo para permitir a los usuarios finales utilizar el formulario sin siquiera cambiar la configuración.

No estoy familiarizado con las macros y VBA, pero estoy dispuesto a probarlos :)

EDITAR: esto está relacionado con mi pregunta: ¿Cómo cambiar el formato de fecha de dd-mm-aaaa a dd-mm-aa en la barra de fórmulas de MS-EXCEL?

pero no necesito cambiar toda la barra de fórmulas, siempre y cuando Excel reconozca que estoy escribiendo en formato dd/mm/aa.

Respuesta1

Básicamente, el Worksheet_Changeevento podría lograr lo que usted solicita, pero debe asegurarse de que el usuario tenga la intención de cambiar las cosas. Agregué un 'Yes/No'cuadro de elección a mi solución para evitar cambios accidentales. Hacer esto sin un cuadro de opciones es arriesgado porque si intenta editar un valor existente, volverá al formato original.

Este código debe "vivir" dentro del código VBA de la hoja en la que desea que actúe:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iDay, iMonth, iYear As Integer
Dim solutionRange As Range

'the cells you want the date to change for
Set solutionRange = Range("D4:D12")

'only triggers if the user's changing one cell
If Target.Count = 1 Then
    If (Not (Intersect(solutionRange, Target) Is Nothing) And (Target.Value > 0)) Then
        'disable application events so this change doesn't trigger itself
        Application.EnableEvents = False

        iDay = Left(Target.Value, 2)
        iMonth = Mid(Target.Value, 4, 2)
        iYear = Right(Target.Value, 4)

        ' Give the user a choice to say whether they need the date changed. You *can* remove both the 'If' and 'End If' if you really need to, but I'd strongly suggest keeping them.
        If (MsgBox("Have you entered your date in the format 'MM/DD/YYYY'?", vbYesNo) = vbYes) Then
            Target.Value = DateValue(iMonth & "/" & iDay & "/" & iYear)
        End If

        Application.EnableEvents = True
    End If
End If
End Sub

Respuesta2

Se exactamente de que estas hablando. Me gusta escribir AA-MM-DD. La configuración para cambiarlo a lo que desea no está en Excel. La configuración que desea está en Windows. Está oculto en algún lugar del panel de control "tiempo e idioma".

Tuve que ir a una configuración avanzada "Cambiar formato de fecha y hora" y cambiar la configuración de "Fecha corta".

Dependiendo del sistema operativo que utilice, las instrucciones pueden ser un poco diferentes.

Espero que esto ayude.

Respuesta3

No creo que puedas cambiar el valor predeterminado. Es especialmente complicado de solucionar cuando se importan datos del extranjero.

La forma menos complicada que se me ocurre de hacer esto es algún tipo de forma manual...


Opción 1: Podríamos aceptar las entradas entextoformatee y colóquelos en las celdas, de esta manera Excel no intentará interpretarlos como fechas. Luego, en una celda adyacente podríamos usar la función FECHA junto con IZQUIERDA, DERECHA y MEDIO. Por ejemplo (especifique que el usuario debe ingresar la fecha completa MM/DD/AAAA):

Celda A1: 05/04/2015

Celda B1: = FECHA (DERECHA (A1,4), IZQUIERDA (A1,2), MEDIO (A1,4,2))


Opción 2: Solicite que el usuario ingrese el 'día', el 'mes' y el 'año' en tres celdas o campos separados, lo que podría ser mejor o peor según su configuración.

De todos modos, ¡buena suerte!

Respuesta4

Tuve el mismo problema al asignar un nuevo valor de dato a mi celda usando el mismo formato que ya tenía

El 02/12/2018 se cambiaría al 2 de diciembre de 2018, aunque el formato de la celda de destino estaba en el mismo formato.

Usar ..Range("B10").Value = DateValue(newdate) resolvió mi problema

información relacionada