Это не то, как вы получаете значение из функции:
Call NextFriday(AproxDate)
EndDate.Value = NextFriday
Если вы хотите, чтобы значение, которое возвращает функция NextFriday
, основывалось на (AproxDate)
, и вы хотите, чтобы это значение в ячейке EndDate
, тогда (вместо обеих строк выше) вы должны использовать:
EndDate.Value = NextFriday(AproxDate)
Вы используете Call
только с функцией, если вы не хотите, чтобы значение было возвращено из нее.
Упрощенные процедуры:
Ваша процедура излишне усложнена.
Верьте или нет, это точно так же, как ваши процедуры :
Public Function NextMonday() As Date
NextMonday = Now() + (9 - Weekday(Now))
End Function
Public Function NextFriday(AproxDate As Date) As Date
NextFriday = AproxDate + (14 - Weekday(Now))
End Function
Private Sub Worksheet_Activate()
.Range("C15")= NextMonday
ThisWorkbook.Sheets("Sheet1").Range("C16")= NextFriday(NextMonday + 84)
End Sub
Упрощенно еще дальше :
Если пойти еще дальше, это 1 саб, точно , как и 3 вышеописанные процедуры :
Private Sub Worksheet_Activate()
With Sheets("Sheet1")
.Range("C15") = Now() + (9 - Weekday(Now))
.Range("C16") = (.Range("C15") + 84) + (14 - Weekday(Now))
End With
End Sub
Еще одна вещь, которую нужно отметить, функция Now
возвращает текущую дату + время. Если вам интересна только дата, используйте функцию Date
.