Какой самый эффективный способ сделать это?
Sub pvaSetWeek(Optional weekOffset As Long = 0)
Dim theDayToday As Long
theDayToday = Weekday(Now, vbMonday)
'Set start to Monday
Range("pvaStartDate") = Int(Now) - (theDayToday - 1) - (weekOffset * 7)
'Set end to Sunday
Range("pvaEndDate") = Int(Now) + (7 - theDayToday) - (weekOffset * 7)
End Sub
или
Sub pvaSetWeek(Optional weekOffset As Long = 0)
'Set start to Monday
Range("pvaStartDate") = Int(Now) - (Weekday(Now, vbMonday)- 1) - (weekOffset * 7)
'Set end to Sunday
Range("pvaEndDate") = Int(Now) + (7 - Weekday(Now, vbMonday)) - (weekOffset * 7)
End Sub
А почему?
Изменить, чтобы добавить: я обычно иду первым путем, так как его легче читать / отлаживать, и, очевидно, он лучше масштабируется, если одно и то же значение нужно использовать более пары раз, но когда значение можно использовать только несколько раз Я часто задавался вопросом, есть ли какое-либо наказание, пусть даже маленькое, за то или иное действие.