Option
Explicit
Const
Pi = 3.14159265358979
Dim
Lat, Lng
As
Double
Function
RAD()
As
Double
RAD = Pi / 180
End
Function
Function
SunHeight()
As
Double
SunHeight = (-50# / 60#) * RAD
End
Function
Function
Sun_Declination(
ByVal
T
As
Double
)
As
Double
Sun_Declination = 0.409526325277017 * Sin(1.69060504029192E-02 * (T - 80.0856919827619))
End
Function
Function
Time_Difference(
ByVal
Declination
As
Double
)
As
Double
Time_Difference = 12# * Application.WorksheetFunction.Acos((Sin(SunHeight) - Sin(Lat * RAD) * Sin(Declination))) / (Cos(Lat * RAD) * Cos(Declination)) / Pi
End
Function
Function
Time_Equation(
ByVal
T
As
Double
)
As
Double
Time_Equation = -0.170869921174742 * Sin(3.36997028793971E-02 * T + 0.465419984181394) - 0.129890681040717 * Sin(1.78674832556871E-02 * T - 0.167936777524864)
End
Function
Function
Sunrise(
ByVal
T
As
Double
)
As
Double
Dim
SD
As
Double
SD = Sun_Declination(T)
Sunrise = 12 - Time_Difference(SD) - Time_Equation(T)
End
Function
Function
SunDown(
ByVal
T
As
Double
)
As
Double
Dim
SD
As
Double
SD = Sun_Declination(T)
SunDown = 12 + Time_Difference(SD) - Time_Equation(T)
End
Function
Sub
Display_Results()
Dim
la, ln
As
String
Dim
DiY, hour, td_utc
As
Double
Dim
rise, down, equa, dekl
As
Double
la = Replace(Worksheets(1).Range(
"C6"
),
"."
,
","
)
ln = Replace(Worksheets(1).Range(
"C5"
),
"."
,
","
)
Lat =
CDbl
(la)
Lng =
CDbl
(ln)
DiY =
CDbl
(Worksheets(1).Range(
"C7"
))
Debug.Print Lng
Debug.Print Lat
rise = Sunrise(DiY)
rise = rise - Lng / 15# + Worksheets(1).Range(
"C9"
)
down = SunDown(DiY)
down = down - Lng / 15# + Worksheets(1).Range(
"C9"
)
Worksheets(1).Range(
"C11"
) = rise
Worksheets(1).Range(
"C12"
) = down
Worksheets(1).Range(
"C13"
) = Time_Equation(DiY)
Worksheets(1).Range(
"C14"
) = Sun_Declination(DiY)
End
Sub