C'era un grave errore di ragionamento nel progetto
mpDDclock (l'orologio da desktop con le fasi lunari e la sveglia) che ho postato sulla
Farm.
Volevo condividere con voi la mia soluzione e se credete avere da voi qualcosa di migliore.
Stupidamente avevo pensato che per aggiornare la data fosse sufficiente un
Data_di_domani = Date(Year(Now), Month(Now), Day(Now) + 1, 0, 0, 0)
Si lo so, non ho ragionato a sufficienza e mia moglie che ha l'orologio sul desktop avrebbe dovuto accorgersene già al primo fine mese.
Purtroppo per pura sorte (
malasorte) non ha mai aperto il computer alla fine del mese, fino a ieri che mi ha chiesto lumi sulla finestra di errore.
A dire il vero era già successo un'altra volta ma io non ero in casa, lei ha cliccato su ignora ha riposizionato l'orologio e si è dimenticata di riferirlo.
Al che mi sono reso conto della mia ingenuità, ecco il codice che potrà essere usato con un
Data_di_domani = TomorrowDay() :
Private Sub TomorrowDay() As Date
Dim hTomorrow As Date
If (Day(Now) + 1) > DaysInMonth(Month(Now)) Then
If (Month(Now) + 1) > 12 Then
hTomorrow = Date(Year(Now) + 1, 1, 1, 0, 0, 0)
Else
hTomorrow = Date(Year(Now), Month(Now) + 1, 1, 0, 0, 0)
Endif
Else
hTomorrow = Date(Year(Now), Month(Now), Day(Now) + 1, 0, 0, 0)
Endif
Return hTomorrow
End
Private Sub DaysInMonth(Month As Integer, Optional Year As Integer = Year(Now)) As Integer
If Month = 12 Then Return 31
Return Day(DateAdd(Date(Year, Month + 1, 1), gb.Day, -1))
End
DaysInMount è ricopiato pari pari dal componente
gb.util ma essendo un metodo inserito ultimamente ho preferito copiarlo per motivi di compatibilità.
Buon proseguimento di primo giorno dell'anno