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

Seleccione idioma Seleccione idioma
Id. de artículo: 213593 - 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 selecciona el 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 haga clic en sistema de fechas 1904 . A continuación, haga clic en Aceptar .
  3. Escriba las fechas siguientes en Sheet1:
          A1: 7/5/96
          A2: 5/11/96
          A3: 4/28/96
    					
  4. En el menú Herramientas , elija macro y haga clic en Editor de Visual Basic . En el Editor de Visual Basic, haga clic en módulo en el menú Insertar .
  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 se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" 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.

Propiedades

Id. de artículo: 213593 - Última revisión: lunes, 10 de febrero de 2014 - Versión: 4.2
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbbug kbdtacode kbpending kbprogramming KB213593 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): 213593

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