Fecha devuelta en una macro es de cuatro años demasiado anticipado

Seleccione idioma Seleccione idioma
Id. de artículo: 157035 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Síntomas

Cuando ejecuta una macro que utiliza una fecha de una celda de hoja de cálculo, la fecha devuelta por la macro puede ser cuatro años y un día anterior a la actual fecha.

Causa

Una macro devuelve una fecha es cuatro años y un día anterior cuando se selecciona "sistema de fechas 1904" en la ficha Calcular del cuadro de diálogo Opciones y una de las condiciones siguientes es verdadera:

  • La macro utiliza la propiedad Value2 cuando almacena la fecha. -o bien -

  • La macro utiliza una función en la biblioteca de la aplicación Microsoft Excel cuando almacena la fecha.

Solución

La macro siguiente determina si el sistema de fechas 1904 está seleccionado, convierte una fecha en el sistema de fechas 1900 y devuelve la fecha esperada.

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. Para utilizar la macro, siga estos pasos:

  1. Para insertar un nuevo libro, haga clic en nuevo en el menú Archivo, haga clic en libro y, a continuación, haga clic en Aceptar.
  2. En el menú Herramientas, haga clic en Opciones, haga clic en la ficha cálculo y, a continuación, haga clic en "sistema de fecha 1904". A continuación, haga clic en Aceptar.
  3. En la Hoja1, escriba las fechas siguientes:
    A1: 7/5/96
    A2: 5/11/96
    A3: 28/4/96
  4. En el menú Herramientas, seleccione Macro y haga clic en Editor de Visual Basic. En el Editor de Visual Basic, vaya al menú Insertar y haga clic en Módulo.
  5. Escriba el código siguiente en la hoja de módulo:
          Sub DateTest()
             'dimension date variable
             Dim dDate As Date
             'store minimum date in range into variable
             dDate = Application.Min(Worksheets(1).Range("A1:A3"))
             'display stored date
             MsgBox "Stored date" & Chr(13) & dDate
             'check for 1904 date system
             If Application.ThisWorkbook.Date1904 Then
              'convert 1904 base date to 1900 base date
              dDate = DateSerial(Year(dDate) + 4, Month(dDate), Day(dDate) + 1)
              'display converted date
                MsgBox "Converted date" & Chr(13) & dDate
             Else
                MsgBox "1904 date system is not enabled"
             End If
          End Sub
    						
  6. Para ejecutar la macro, elija Macro en el menú Herramientas y haga clic en macro. Seleccione DateTest y haga clic en ejecutar.
Aparece el primer cuadro de mensaje con una fecha 4/27/92, que es cuatro años y un día anterior a la fecha más temprana en el rango de celdas A1 a A3. El segundo cuadro de mensaje muestra la fecha "convertir" correcta de 28/4/96.

Estado

Microsoft ha confirmado que trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Visual Basic para aplicaciones no automáticamente detectar el sistema de fechas 1904 y convertir la fecha según sea necesario. Si un usuario selecciona el sistema de fechas 1904 en Microsoft Excel y ejecuta una macro que lee una fecha a partir de una celda de una hoja de cálculo, la diferencia puede ser cuatro años y un día (cuentas del un día adicional para el año bisiesto). Por ejemplo, una fecha de 9/1/96 en el sistema de fechas 1904 puede devolver una fecha de 8/31/92.

Cuando se selecciona el sistema de fechas 1904 y la macro utiliza la propiedad Value2 cuando almacena la fecha se puede producir la discrepancia del sistema de fecha en Visual Basic.

La propiedad Value2 es una propiedad nueva en Visual Basic que puede utilizar en Microsoft Office 97. La propiedad Value2 almacena las variables en la misma manera que la propiedad Value excepto que no utiliza los tipos de datos moneda o fecha.

Propiedades

Id. de artículo: 157035 - Última revisión: domingo, 9 de febrero de 2014 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbdtacode kbprb kbprogramming KB157035 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 157035

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com