Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2020, 05:48   #1
Mkoty
Пользователь
 
Регистрация: 26.05.2020
Сообщений: 22
По умолчанию Число рабочих дней между двумя датами

Добрый день
Нашел вот такую функцию
Код:
Public Function КРД(day1, day2)  
 
Selebrate = Array(39756, 39755, 39612, 39611, 39577, 39570, 39569, 39517, 39503, 39455, 39454, 39451, 39450, 39449, 39448, 39447, 39391, _  
                   39245, 39244, 39211, 39203, 39202, 39149, 39136, 39090, 39087, 39086, 39085, 39084, 39083, 38846)  
Iskluchenia = Array(39753, 39200, 39242, 39445)  
         
Dim weekend As Boolean  
Dim holiday As Boolean  
 
       КРД = 0  
       For D = day1 To day2  
         
       'определяем субботу и воскресение  
       weekend = False  
           For i = LBound(Iskluchenia) To UBound(Iskluchenia)  
           If (Weekday(D, vbMonday) = 6 Or Weekday(D, vbMonday) = 7) And D <> Iskluchenia(i) Then  
               weekend = True  
               Exit For  
           End If  
           Next i  
         
         
       'определяем праздники  
       holiday = False  
           For i = LBound(Selebrate) To UBound(Selebrate)  
           If D = Selebrate(i) Then  
               holiday = True  
               Exit For  
           End If  
           Next i  
         
       If weekend = False And holiday = False Then КРД = КРД + 1  
       Next D  
End Function
но она зараза ругается на переменные, что не определены.
ставил разные но идет несоответствие типов.
помогите разобраться
Mkoty вне форума Ответить с цитированием
Старый 25.06.2020, 07:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Не пишите тип переменной в описании или уберите строку op tion explicit
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.06.2020, 08:05   #3
Mkoty
Пользователь
 
Регистрация: 26.05.2020
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Не пишите тип переменной в описании или уберите строку op tion explicit
убрал строку op tion explicit не помогло
на строке
Код:
       For d = day1 To day2
ругается несоответствие типов
Mkoty вне форума Ответить с цитированием
Старый 25.06.2020, 08:08   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

что хранится в day1 u day2? пример данных

Код:
Public Function КРД(day1 as long, day2 as long)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.06.2020, 08:31   #5
Mkoty
Пользователь
 
Регистрация: 26.05.2020
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
что хранится в day1 u day2? пример данных

Код:
Public Function КРД(day1 as long, day2 as long)
Там хранятся даты. мы же считаем между Датой 1 и датой 2
Код:
Public Function KRD(day1 As Date, day2 As Date)
Selebrate = Array(39756, 39755, 39612, 39611, 39577, 39570, 39569, 39517, 39503, 39455, 39454, 39451, 39450, 39449, 39448, 39447, 39391, _  
                   39245, 39244, 39211, 39203, 39202, 39149, 39136, 39090, 39087, 39086, 39085, 39084, 39083, 38846)  
Iskluchenia = Array(39753, 39200, 39242, 39445)  
         
Dim weekend As Boolean  
Dim holiday As Boolean  
 
       КРД = 0  
       For D = day1 To day2  
         
       'определяем субботу и воскресение  
       weekend = False  
           For i = LBound(Iskluchenia) To UBound(Iskluchenia)  
           If (Weekday(D, vbMonday) = 6 Or Weekday(D, vbMonday) = 7) And D <> Iskluchenia(i) Then  
               weekend = True  
               Exit For  
           End If  
           Next i  
         
         
       'определяем праздники  
       holiday = False  
           For i = LBound(Selebrate) To UBound(Selebrate)  
           If D = Selebrate(i) Then  
               holiday = True  
               Exit For  
           End If  
           Next i  
         
       If weekend = False And holiday = False Then КРД = КРД + 1  
       Next D  
End Function
получилось.
Спасибо
Mkoty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дни между двумя датами - Нужно посчитать сколько дней осталось с одной даты до другой даты m0nr Общие вопросы Delphi 7 14.08.2016 01:05
найти разницу между двумя датами, а результат записать в письменном виде, так чтобы было согласование между падежами KatanaZh Microsoft Office Excel 15 27.11.2012 00:11
число часов между двумя датами Azart11 Общие вопросы C/C++ 13 06.10.2012 15:26
С++: найти число дней между 2 датами kissel Помощь студентам 2 15.03.2009 17:18