powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Формирования банковског дня
8 сообщений из 8, страница 1 из 1
Формирования банковског дня
    #34750624
Redman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите,пожалуйста,упростить код.Задача: к дате 24 августа 2007 надо прибавить 7 банковских дней,т.е. 7 будничных дней без выходных.Я попытался сделать,но он у меня получился слишком большим.Подскажите,пожалйста,как его можно упростить.Вот эта функция
Function wekend(days As Date)
Dim Bankday As Date
Dim a As Integer
Dim s As Integer
Dim nDay As Integer
Bankday = days
For i = 1 To 7
Bankday = Bankday + 1
nDay = Weekday(Bankday)
If (nDay = 1) Or (nDay = 7) Then a = a + 1
Next i
For i = 1 To a
Bankday = Bankday + 1
nDay = Weekday(Bankday)
If (nDay = 1) Or (nDay = 7) Then s = s + 1
Next i
For i = 1 To s
Bankday = Bankday + 1
Next i
wekend = Bankday
End Function
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34751045
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function wekend(days As Date) As Date
Dim n As Long
    wekend = days
    Do While n <  7 
        wekend = wekend +  1 
        If Weekday(wekend, vbMonday) <  6  Then n = n +  1 
    Loop
End Function
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34751090
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Command1_Click()
   DTPicker2.Value = DateAddEx( 7 , DTPicker1.Value)
End Sub

Private Function DateAddEx(ByVal DaysToAdd As Long, ByVal Date1 As Date) As Date
   Dim i As Long
   Do While i < DaysToAdd
      Date1 = Date1 +  1 
      If DatePart("w", Date1, vbMonday, vbFirstJan1) <  6  Then
         i = i +  1 
      End If
   Loop
   DateAddEx = Date1
End Function
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34751103
Redman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо.
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34751106
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Function DateAddWork(dtm As Date, n As Integer) As Date
    Dim i As Integer
    
    'если это окнец недели, выходим на начало следующей
    If Weekday(dtm, vbMonday) >=  5  Then n = n +  7  - Weekday(dtm, vbMonday)
    
    'определяем кол-во выходных дней в заданном периоде
    i = n + (n \  7 ) *  2 
    
    'получаем рузультат
    DateAddWork = dtm + i
    
    'если результат -  это окнец недели, то добавляем кол-во выходных
    If Weekday(DateAddWork, vbMonday) >  5  Then DateAddWork = DateAddWork +  7  - Weekday(DateAddWork, vbMonday) +  1 
    
End Function

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34751939
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В банковских днях кроме выходных еще участвуют и праздники. Можно хорошо попасть.
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34752097
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAndrewВ банковских днях кроме выходных еще участвуют и праздники. Можно хорошо попасть.

Нужен массив с праздниками и тогда помимо проверки
Код: plaintext
Weekday(wekend, vbMonday) <  6 
Делаешь ещё проверку на вхождение в массив празников.

Если речь ввобще про эксель, то в нём есть функция рабдни (по моему) при установке пакета анализа.
...
Рейтинг: 0 / 0
Формирования банковског дня
    #34752583
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще такой прием: Создавать таблицу дат в базе данных заранее и в ней указывать все что нужно, и использовать ее в запросах.
В книге Джо Сполски нашел.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Формирования банковског дня
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]