VBA Excel: Formato de fecha
Resuelto
misfit
-
Kimo -
Kimo -
Hola,
No consigo dar formato a una fecha ingresada en un formulario:
Al cerrar el formulario, los datos ingresados se copian en las celdas de una hoja de cálculo; he definido en las celdas de la primera columna de mi hoja de cálculo un formato "Fecha" en forma "dd/mm/aaaa".
En el módulo (ver el código a continuación), fuerzo el valor del textbox a este formato:
Sin embargo, a pesar de todas estas precauciones, la fecha copiada en la celda está en formato "mm/dd/aaaa".
No deseo modificar las preferencias regionales.
¿Alguien tiene una solución?
Gracias de antemano
No consigo dar formato a una fecha ingresada en un formulario:
Al cerrar el formulario, los datos ingresados se copian en las celdas de una hoja de cálculo; he definido en las celdas de la primera columna de mi hoja de cálculo un formato "Fecha" en forma "dd/mm/aaaa".
En el módulo (ver el código a continuación), fuerzo el valor del textbox a este formato:
If saisie.date_ev.Value <> "" Then If Not IsDate(saisie.date_ev.Value) Then MsgBox "Fecha incorrecta.", vbCritical + vbOKOnly, "Error" saisie.date_ev.Value = "" saisie.date_ev.SetFocus saisie.Hide saisie.Show Else saisie.date_ev.Value = Format(saisie.date_ev.Value, "dd/mm/yyyy") End If End If
Sin embargo, a pesar de todas estas precauciones, la fecha copiada en la celda está en formato "mm/dd/aaaa".
No deseo modificar las preferencias regionales.
¿Alguien tiene una solución?
Gracias de antemano
21 respuestas
- 1
- 2
Siguiente
Hola Misfit,
Los formatos de fecha asignados a las celdas en Excel no se traducen todos de la misma manera en VBA.
Así, una celda cuyo formato se define como dd/mm/aa en Excel se traduce en VBA como: NumberFormat = dd/mm/yy. Normal.
Mientras que un formato definido como dd/mm/yyyy se traduce como: NumberFormat = m/d/yyyy, lo que cambia todo.
Concretamente, en VBA, invierte los meses y los días.
Armojax.
Los formatos de fecha asignados a las celdas en Excel no se traducen todos de la misma manera en VBA.
Así, una celda cuyo formato se define como dd/mm/aa en Excel se traduce en VBA como: NumberFormat = dd/mm/yy. Normal.
Mientras que un formato definido como dd/mm/yyyy se traduce como: NumberFormat = m/d/yyyy, lo que cambia todo.
Concretamente, en VBA, invierte los meses y los días.
Armojax.
- 1
- 2
Siguiente
Gracias por tu respuesta que, además, funciona súper bien.
Son locos estos americanos...
ActiveCell.NumberFormat = "dd/mm/yyyy" 'fecha/mes invertido
Los estadounidenses no están locos en absoluto... Excel es simplemente de origen estadounidense y la interfaz de Excel se adapta según los diferentes países, aparte de la VBA que ha permanecido estadounidense, así que todo lo que viene de allí, como el formato de fecha, debe adaptarse a las diferentes interfaces de Excel.
No sé mucho, pero viendo cómo se compone y se escribe la VBA, la deducción es obvia...
;)