Option Explicit
Private Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long
Private Type SystemTime
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End TypePrivate MySystemTime As SystemTimePrivate m_Year As Integer
Private m_Month As Integer
Private m_Day As Integer
Private m_Hour As Integer
Private m_Minute As Integer
Private m_Second As IntegerPublic Property Get Year() As Integer
    Year = m_Year
End Property
Public Property Let Year(New_Year As Integer)
    m_Year = New_Year
End PropertyPublic Property Get Month() As Integer
    Month = m_Month
End Property
Public Property Let Month(New_Month As Integer)
    m_Month = New_Month
End PropertyPublic Property Get Day() As Integer
    Day = m_Day
End Property
Public Property Let Day(New_Day As Integer)
    m_Day = New_Day
End PropertyPublic Property Get Hour() As Integer
    Hour = m_Hour
End Property
Public Property Let Hour(New_Hour As Integer)
    m_Hour = New_Hour
End PropertyPublic Property Get Minute() As Integer
    Minute = m_Minute
End Property
Public Property Let Minute(New_Minute As Integer)
    m_Minute = New_Minute
End PropertyPublic Property Get Second() As Integer
    Second = m_Second
End Property
Public Property Let Second(New_Second As Integer)
    m_Second = New_Second
End PropertyPublic Function setup() As Integer
    With MySystemTime
        .wYear = Year
        .wMonth = Month
        .wDay = Day
        '.wDayOfWeek = 1
        .wMinute = Minute
        .wHour = Hour
        .wSecond = Second
        '.wMilliseconds = 0
    End With
    setup = SetSystemTime(MySystemTime)
End Function