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.-
-
-
De hecho, el problema persiste en mi caso (el registro de una celda de tipo fecha en un archivo csv se hace correctamente según el formato "dd/mm/yyyy", pero la recarga de la celda desde el archivo cambia el formato de visualización a "mm/dd/yyyy". Aparentemente, guardar y cargar no funcionan con el mismo formato. He podido eludir esto añadiendo una comilla (') delante del valor a asignar: ActiveCell.Value = "'" + val_cell_read_from_file
-
@ misfit
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...
;) -
Gracias muchas querido amigo, esta pequeña pero no menos brillante explicación me libera de docenas de noches en blanco torturándome los neuronas por este mínimo inconveniente... Señor, su aclaración sobre la inversión de los días y los meses en VBA es simplemente, si me permites torcer la lengua de Voltaire, "euréquesque". Cordialmente...
-
- 1
- 2
Siguiente