VBA Excel: Formato de fecha

Resuelto
misfit -  
 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:
 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
Armojax
 
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.
32
misfit
 
Hola Armojax,

Gracias por tu respuesta que, además, funciona súper bien.
Son locos estos americanos...
0
pat
 

ActiveCell.NumberFormat = "dd/mm/yyyy" 'fecha/mes invertido
0
pat
 
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
0
jimmy1120112 Mensajes publicados 713 Estado Miembro 61
 
@ 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...
;)
0
Kimo
 
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...
0
  • 1
  • 2