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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 11:35   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию 2 mchip

Цитата:
Так функция РАБДЕНЬ может на автомате вычесть "сб", "вс", а праздники загнать в таблицу.
в том то и проблема, что РАБДЕНЬ замечательно учитывает только субботы и воскресенья, отлично учитывает праздники, если их описать, а вот когда празник попал на выходной...
универсальной формулы вообще не написать, потому что нужен еще один параметр страна и для каждой страны свой список праздников и особенностей их учета. а всех праздников во всех странах не перебрать, а даже если и перебрать, то со временем эта информация теряет актуальность. На украине, например, 20 лет назад праздником было 7 ноября, а сейчас нет, зато появились день независимости 24.08 и день конституции 28.06.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.05.2009, 17:19   #12
barbus
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от pivas Посмотреть сообщение
barbus, не корысти ради, а научения для... Чем не устраивает мой вариант?
Дает сбои когда добавляем в список праздников новую дату.
Цикл останавливается не проверяя добавленную дату.

Еще формат 01.01.2009 непонятен ,почему внесен год празников надо убрать?

Думаю здесь для оганизации цикла нужен формат месяц/день,надо проверить список месяцов, если есть совпадения то список дней на совпадение.

В прикрепленном 1.doc файле есть код но надо оптимизировать дла наших целей.

У меня офис XP, код нужен в виде VBA макроса.

Последний раз редактировалось barbus; 29.05.2009 в 17:28.
barbus вне форума Ответить с цитированием
Старый 26.02.2010, 19:39   #13
barbus
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 37
По умолчанию

Сделал код работает.

Код:
Function Calculat_data(Skzb_amsativ As Date, Amisner As Integer)
Dim data_bufer As Date        'ݳËÝ³Ï³Ý Ñ³ßí³ñÏí³Í ³Ùë³ÃÇí ³é³Ýó ïáÝ»ñÇ ¨ ß³µ³Ã, ÏÇñ³ÏÇÇ
Dim data_calc As Date          'ݳËÝ³Ï³Ý Ñ³ßí³ñÏí³Í ³Ùë³ÃÇí ïáÝ»ñáí'
data_bufer = DateAdd("m", Amisner, Skzb_amsativ)   'ÁÝóóÇÏ Å³Ù³Ý³Ï
'MsgBox data_bufer, vbInformation + vbOKOnly, "àõß³¹ñáõÃÛáõÝ !!!! "
Set mesyac = Range("Banadzever!j3:j24")
Set den = Range("Banadzever!k3:k24")
For i = 1 To 24
    If mesyac.Item(i) = Month(data_bufer) Then
        If den.Item(i) = Day(data_bufer) Then
        MsgBox data_bufer & "- ³Ûë ûñÁ ³½³ï ûñ ¿.                ", vbExclamation + vbOKOnly, "àõß³¹ñáõÃÛáõÝ !!!!"
        data_bufer = DateSerial(Year(data_bufer), Month(data_bufer), Day(data_bufer) + 1)
        'Else
        'MsgBox "ãÇ Ñ³ÙÁÝÏÝáõÙ", vbQuestion + vbOKOnly, "üáõÝÏódz               "
    End If
End If
Select Case Weekday(data_bufer, vbMonday)
             Case 6
                data_calc = DateSerial(Year(data_bufer), Month(data_bufer), Day(data_bufer) + 2)
            Case 7
                data_calc = DateSerial(Year(data_bufer), Month(data_bufer), Day(data_bufer) + 1)
            Case Else
                data_calc = DateSerial(Year(data_bufer), Month(data_bufer), Day(data_bufer))
End Select
data_bufer = data_calc
Next i
'data_bufer = MsgBox(data_bufer, _
vbQuestion + vbOKOnly, "´áõý»ñÇ ³Ùë³ÃÇí                ")
'data_calc = MsgBox(data_calc, _
vbQuestion + vbOKOnly, "гßí³ñÏí³Í ³Ùë³ÃÇí                ")
If data_bufer <> data_calc Then
MsgBox data_calc & "- ïáÝ ¨ ³½³ï ûñ»ñÇÝ Ñ³çáñ¹áÕ ³é³çÇÝ ³ß˳ï³Ýù³ÛÇÝ ûñÝ ¿           ", vbInformation + vbOKOnly, "àõß³¹ñáõÃÛáõÝ !!!! "
End If
data_bufer = data_calc
'MsgBox data_calc, vbInformation + vbOKOnly, "àõß³¹ñáõÃÛáõÝ !!!! "
Calculat_data = Format(data_calc, "dd/mm/yyyy")
End Function
Знатоки посмотрят на ошибки.
Изображения
Тип файла: gif Безымянный.GIF (99.1 Кб, 125 просмотров)
barbus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59
Смена дня UnChanter Общие вопросы Delphi 13 03.02.2009 16:56
Добавление дня к дате Askat БД в Delphi 2 03.03.2008 11:30
Help!!! диплом через 2 дня!!!! WinD Помощь студентам 3 23.06.2007 20:21