Los milisegundos se redondean al segundo más cercano cuando intenta asignar el formato de fecha de VBA o el formato de fecha de variante a una celda de una hoja de cálculo de Excel.


Síntomas


Cuando se realiza un cambio de programación en el valor de una celda en una hoja de cálculo de Microsoft Excel, el valor de milisegundos que se especifica se redondea al segundo más cercano. Este problema se produce cuando se cumplen las condiciones siguientes:
  • El cambio que realice asignará el formato de fecha de VBA o el formato de fecha de variante a la celda.
  • El cambio mediante programación se realiza mediante una macro de Visual Basic para aplicaciones o mediante un cliente de automatización externo.
Este problema no se produce cuando el cambio que realiza asigna el formato de fecha o el formato de hora a la celda.

Causa


Este problema se produce porque, de forma interna, Excel da formato a cadenas de fecha según el formato de fecha y hora especificado en la pestaña Opciones regionales del elemento configuración regional y de idioma en el panel de control. Este valor se redondea al segundo más cercano. Excel asigna este valor a la celda y, a continuación, vuelve a calcular el valor para generar un nuevo valor de fecha para la celda.

Solución alternativa


Use uno de los siguientes métodos para solucionar este problema.

Método 1

Puede convertir el valor de fecha en un formato de cadena que contiene una fracción de un segundo. Este valor de cadena se puede asignar y calcular como un formato de fecha que conserva los milisegundos.

Método 2

Puede usar la propiedad value2 del objeto Range para conservar los milisegundos. Por ejemplo, puede usar el siguiente código de VBA.
Sub CopyValueUsingVBDate()   Dim d As Date   d = ActiveSheet.Range("A1").Value   ActiveSheet.Range("B1").Value2 = dEnd Sub
Para obtener información adicional al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
182812 Descripción de la propiedad value2 del objeto Range