1

Тема: VBA: Функция "Рабдень"

Есть функция "Рабдень", нужна аналогичная функция написанная на  vba.
Смысл в том, что бы задавать начальную дату, временной интервал в днях и что бы функция считала конечную дату исключая выходные и праздничные дни указанные списком.

2

Re: VBA: Функция "Рабдень"

PRIMALEVIL, а стоит? Это: Using Microsoft Excel Worksheet Functions in Visual Basic [Excel 2003 VBA Language Reference] пробовали пользовать?

3

Re: VBA: Функция "Рабдень"

alexii пишет:

PRIMALEVIL, а стоит? Это: Using Microsoft Excel Worksheet Functions in Visual Basic [Excel 2003 VBA Language Reference] пробовали пользовать?

Стоит. мне нужна именно текс кода самой функции.

4

Re: VBA: Функция "Рабдень"

Стоит. мне нужна именно текс кода самой функции.

Как Вы понимаете VBA кода функции рабочего листа «Рабдень» не существует в принципе.

Ответьте на второй вопрос.

5

Re: VBA: Функция "Рабдень"

Я делаю БД в access. БД до этого существовала в Excel, там один из важных моментов - вычисление даты через функцию "Рабдень", вот я и думаю как реализовать то же самое в access

6

Re: VBA: Функция "Рабдень"

PRIMALEVIL, ясно. Это, случайно, не Ваша тема: РАБДЕНЬ ЧИСТРАБДНИ в ACCESS - MS Access - CyberForum.ru?

7

Re: VBA: Функция "Рабдень"

alexii пишет:

PRIMALEVIL, ясно. Это, случайно, не Ваша тема: РАБДЕНЬ ЧИСТРАБДНИ в ACCESS - MS Access - CyberForum.ru?

Если бы все так просто было...

8 (изменено: alexii, 2014-12-19 12:47:07)

Re: VBA: Функция "Рабдень"

Вот итоговая рабочая функция, вдруг кому потребуется:

Public Function WeekDayCalc(StartDate As Date, Days As Integer, HolD As Range) As Date
Dim x As Date
Dim i As Integer
Dim s As Integer

x = StartDate: i = 0

Do

x = x + 1

        For Each hd In HolD
            If x = hd Or Weekday(x, 2) = 6 Or Weekday(x, 2) = 7 Then
                s = 0
            ElseIf x = hd Or Weekday(x, 2) >= 1 And Weekday(x, 2) <= 5 Then
                s = 1
            End If
            
            If s = 0 Then
                Exit For
            End If
    Next hd
    
i = i + s

Loop Until i = Days

WeekDayCalc = x

End Function

9

Re: VBA: Функция "Рабдень"

Вот итоговая рабочая функция

Стоп. Откуда в Access'е тип «Range»?

10 (изменено: PRIMALEVIL, 2014-12-19 14:25:17)

Re: VBA: Функция "Рабдень"

alexii пишет:

Вот итоговая рабочая функция

Стоп. Откуда в Access'е тип «Range»?

Блин, функция работает только Excel, опубликовал до того как протестил в Access...
Да, там не катит...

11

Re: VBA: Функция "Рабдень"

PRIMALEVIL, попробуйте использовать там, например. массив. Наподобие:

…, aHolydays() As Date) As Date

(не проверялось).