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 :ciao: