XL2000: Data restituito in una macro è anno troppo prima

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 213593
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Quando si esegue una macro che utilizza una data di una cella del foglio di lavoro, la data restituita dalla macro può essere quattro anni e un giorno precedenti alla data effettiva.
Cause
Una macro restituisce una data, ovvero quattro anni e un giorno precedente quando si seleziona il sistema data 1904 nella scheda calcolo della finestra di dialogo Opzioni e una delle seguenti condizioni è vera:

  • La macro utilizza la proprietà Value2 quando memorizza la data.

    - oppure -

  • Quando si archivia la data, la macro utilizza una funzione nella libreria di applicazione di Microsoft Excel.
Workaround
La macro riportata di seguito determina se il sistema data 1904 è selezionato, converte una data nel sistema di data 1900 e restituisce la data prevista.

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non è limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalità aggiuntive o creare procedure per soddisfare specifiche esigenze.
Per utilizzare la macro, attenersi alla seguente procedura:

  1. Per inserire una nuova cartella di lavoro, scegliere Nuovo dal menu file , fare clic su cartella di lavoro e quindi fare clic su OK .
  2. Dal menu Strumenti , fare clic su Opzioni , fare clic sulla scheda calcolo e quindi fare clic su sistema data 1904 . Quindi, fare clic su OK .
  3. Digitare le date seguenti nel Foglio1:
          A1: 7/5/96      A2: 5/11/96      A3: 4/28/96					
  4. Scegliere macro dal menu Strumenti , quindi Visual Basic Editor . In Visual Basic Editor, scegliere modulo dal menu Inserisci .
  5. Digitare il seguente codice nel foglio del modulo:
          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. Per eseguire la macro, scegliere macro dal menu Strumenti e fare clic su macro . Selezionare DateTest e scegliere Esegui .
Verrà visualizzata la prima finestra di messaggio con una data 27/4/92, ovvero quattro anni e un giorno precedenti la data nell'intervallo di celle da A1 a A3. La seconda finestra di messaggio Visualizza la data "convertita" corretta di 28/4/96.
Status
Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo.
Informazioni
Per le applicazioni di Visual Basic non automaticamente di rilevare il sistema data 1904 e di convertire la data come necessario. Se un utente seleziona il sistema data 1904 in Microsoft Excel ed esegue una macro che legge una data da una cella del foglio di lavoro, la differenza può essere quattro anni e un giorno (il giorno di un ulteriore account per l'anno bisestile). Ad esempio, una data del 1/9/96 nel sistema data 1904 potrebbe restituire una data 8/31/92.

La differenza di sistema di data può verificarsi in Visual Basic quando si seleziona il sistema data 1904 e la macro utilizza la proprietà Value2 quando memorizza la data.
XL2000

Proprietà

ID articolo: 213593 - Ultima revisione: 01/23/2014 08:06:59 - Revisione: 4.2

Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbdtacode kbpending kbprogramming KB213593 KbMtit
Feedback