Прежде всего, вам нужно понять, как VBA «понимает» дату.
Excel, Access, VBA и многие продукты MS хранят даты как число двойной точности; целая часть числа - это дата (количество дней, считанных с 1 января 1900 года), а десятичная часть числа - это время (часть дня).
Это позволяет легко сравнивать две даты: вы можете сравнивать, добавлять или выписывать даты так же, как если бы вы использовали цифры. Итак, если t0
и t1
- это две даты (t1 >= t0
), то выражение t1 - t0
даст вам разницу в днях.
Теперь ... как рассчитывать «рабочие дни» между двумя датами? Функция format()
в VBA может вам помочь. Вы можете использовать эту функцию для возврата числа «день недели». Проверьте онлайн-справку по функции: http://msdn.microsoft.com/en-us/library/office/gg251755.aspx
Итак ... как вы положите это вместе? Вот пример:
public function bizDaysRemaining(t0 as date, t1 as date) as String
Dim ans As String, dayCount as Integer, n as Integer
If t1 < t0 Then
ans = "Warning"
Else
dayCount = 0
n = 0
While t0 + n <= t1
if format(t0 + n, "w", vbMonday) <= 5 Then dayCount = dayCount + 1
n = n + 1
Wend
If dayCount < 3 Then
ans = "Warning"
Else
ans = "There are " & dayCount & " business days remaining"
End If
End IF
bizDaysRemaining = ans
End Function
Надеется, что это помогает вам
http://stackoverflow.com/q/10583970 –
Вы должны попробовать сначала решить вашу проблему и опубликовать ваши попытки кодирования. – Barranka
http://msdn.microsoft.com/en-us/library/office/ff835532.aspx – SeanC