Hvordan avgjør dere sommertid i VBA?

stemmer
3

Hvilken funksjon vil gi oss beskjed om en dato i VBA er i DST eller ikke?

Publisert på 24/09/2008 klokken 22:56
kilden bruker
På andre språk...                            


2 svar

stemmer
5

For langsiktige datoer (DST 2007+):

Først trenger du en funksjon for å finne antall spesifikke hverdager i en måned:

Public Function NDow(Y As Integer, M As Integer, _
                N As Integer, DOW As Integer) As Date  

' Returns Date of Nth Day of the Week in Month  

NDow = DateSerial(Y, M, (8 - Weekday(DateSerial(Y, M, 1), _
              (DOW + 1) Mod 8)) + ((N - 1) * 7))  

End Function  

Deretter kan du se etter DST dag versus følgende funksjonskall:

Fall: NDow (År (newdate), 11, 1, 1)
Spring: NDow (År (newdate), 3, 2, 1)

For dagens dato:

Ring Windows API-funksjonen GetTimeZoneInformation, og det vil returnere en enum (heltall) med status.

Jeg fikk koden for dette fra Chip Pearson store Excel nettstedet.

Pearson nettsted

Svarte 24/09/2008 kl. 22:57
kilden bruker

stemmer
4

For alle som lurer på hvordan man skal ta hensyn til sommertid i Europa (Sentral-Europa tid), jeg endret manuset fra Chip Pearson . Den siste søndagen i mars (2 AM til 3 AM) og oktober (3 AM til 2 AM) er de dager da timen veksling skjer.

Følgende kode er klikkhendelsen på en knapp i Excel:

Dim dates As String
dates = "A1:A20"

For Each c In Worksheets("Sheet1").Range(dates).Cells
    If (IsDateWithinDST(c.Value)) Then
        c.Value = DateAdd("h", 1, c.Value)
    End If
Next

Modulen inneholder de nødvendige metoder som finnes her .

Mer info om sommertid i Europa.

Svarte 18/12/2015 kl. 11:58
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more