E ' solo il foglio di lavoro stesso. O per essere corretto: la funzionalità del foglio di lavoro!
prova rapida:
?cdate(1)
1899-12-31
?format(1,"YYYY-MM-DD")
1899-12-31
?worksheetfunction.Text(1,"YYYY-MM-DD")
1900-01-01
Ma andando per la data di oggi non mostra questa lacuna:
?clng(now)
42463
?worksheetfunction.Text(now,"0")
42463
Ciò dimostra che da qualche parte tra 1 e 42463 è un gap (il controllo di loto veloce mostra che :
?cdate(60) & " --- " & cdate(61)
1900-02-28 --- 1900-03-01
?format(60,"YYYY-MM-DD") & " --- " & format(61,"YYYY-MM-DD")
1900-02-28 --- 1900-03-01
?worksheetfunction.Text(60,"YYYY-MM-DD") & " --- " & worksheetfunction.Text(61,"YYYY-MM-DD")
1900-02-29 --- 1900-03-01
Solo un ultimo test per vederlo di nuovo:
01.235.164,106174 millions
?format("1900-02-28","0") & " --- " & format("1900-03-01","0")
60 --- 61
?worksheetfunction.Text("1900-02-28","0") & " --- " & worksheetfunction.Text("1900-03-01","0")
59 --- 61
a partire da 61, c'è semplicemente una differenza di numeri. Ma il Lotus-Bug aggiunge il 1900-02-29 per "compatibilità".
Inoltre: questa è una "funzionalità" per Excel e non ha nulla a che fare con base, vbscript, vba .......... Tutti gli altri programmi funzionano nel modo corretto e otterrebbero molti problemi se VBA non lo farebbe. Quindi per "compatibilità" il VBA in Excel lo fa nel modo corretto;)
Poiché la data di base (data zero) in tutte le applicazioni MS Office è 12-30-1899 e l'aggiunta di 1 a tale data risulta in 12 -31-1899. (Puoi verificarlo da solo inserendo 0 in una cella di Excel e formattandolo come data.) –
@KenWhite allora perché MacroMan ha ottenuto 1/1/1900 [qui] (http://stackoverflow.com/questions/36375368/ simple-why-is-my-msgbox-not-return-the-current-year? noredirect = 1 # comment60374031_36375368) nei commenti. Inoltre puoi fare '? CDate (1)' sul tuo sistema e dirmi cosa ottieni? – newguy
@KenWhite è corretto sulla data di epoca - puoi leggere su * perché * [qui] (https://blogs.msdn.microsoft.com/ericlippert/2003/09/16/erics-complete-guide-to-vt_date /) – Comintern