Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как определить кол-во субботних дней в текущем мес Добавлено: 10.10.06 15:40  

Автор вопроса:  macho
Как с помощью средств ВБА подсчитать
1. кол-во суббот в месяце?
2. выхоных дней: (суббота + воскрксенье)?
или рабочих дней (с исключением субботы и воскресенья)?
Я такой функции в ВБА не нашел.
С уважением macho

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #1 Добавлено: 10.10.06 16:48
А может тебе функцию, которая будет кофе приносить? А по выходным еще и пиво?
Это делается ручками:
Есть такая функция WeekDay(Date), которая возвращает число от 0 до 6 - день недели. По умолчанию 0 - это воскресенье (у американцев с него начинается новая неделя), но у функции есть параметр, который може задать и другое значение.
Берешь переменную типа Date (например Dat), присваиваешь ей значение начала месяца (скажем 01.10.2006) и начинаешь прибавлять по 1 (Dat = Dat + 1). Делаешь это в цикле While-wend, проверяя в качестве условия смену номера месяца (month(Dat)). Если номер месяца поменялся, то начался новый месяц и подсчет окончен.
Сам подсчет: проверяешь номер дня недели WeekDay(Dat), если он 0 - воскресенье, 6 - суббота (по умолчанию).
Все.

Ответить

Номер ответа: 2
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #2
Добавлено: 10.10.06 17:01
Или мегаформулой
{=СУММ((ДЕНЬНЕД(ДАТА(ГОД(A1);МЕСЯЦ(A1);СТРОКА(ДВССЫЛ("1:"&ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0))))))=B1)*1)}

Не забудь в А1 - дата твоего месяца, В1 - день недели (0 - воскресенье).

Ответить

Номер ответа: 3
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #3 Добавлено: 10.10.06 17:19
2 Дмит:
Но это же для Excel, а не для VBA! Не сбивай товарисча с пути истинного, пусть учится работать на VB головой, а не тырить функции у Excelov.

Ответить

Номер ответа: 4
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #4 Добавлено: 10.10.06 18:33
Вот тебе готовая функция для этого дела. Она считает выходные (субботы + воскресенья).
Немного воображения и соображения и ее можно заставить считать раздельно то и другое.

Function VichodnCount(ByVal MonthNumber)

    ;Dim Dat As Date
    ;Dim MStr As String
    If MonthNumber < 10 Then
        MStr = "0" & CStr(MonthNumber)
    Else
        MStr = CStr(MonthNumber)
    End If
    ;Dat = "01." & MStr & "." & CStr(Year(Date))
    
    While Month(Dat) = MonthNumber
        If Weekday(Dat, vbMonday) = 6 Then
            VichodnCount = VichodnCount + 1
        ElseIf Weekday(Dat, vbMonday) = 7 Then
            VichodnCount = VichodnCount + 1
        End If
        ;Dat = Dat + 1
    Wend

End Function

Вот пример использования функции:

Sub Test()

    MsgBox VichodnCount(10)

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 macho



Вопросов: 11
Ответов: 19
 Профиль | | #5 Добавлено: 10.10.06 23:43
Большое спасибо. Все понял.
Кофе не употребляю, а пиво - с удовольствием!
Желаю всем успехов.

Ответить

Номер ответа: 6
Автор ответа:
 Андрей



ICQ: 223068450 

Вопросов: 0
Ответов: 3
 Профиль | | #6 Добавлено: 18.10.06 02:02
Да это нечестно надо и голововой покрутить

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам