Страница: 1 |
Страница: 1 |
Вопрос: Как в VBA 2003 определить номер недели?????
Добавлено: 10.01.08 10:19
Автор вопроса: Таня | ICQ: 410031407
Прблемка такая, нужно, чтобы в зависимости от номера недели открывался определенный лист в книге, заранее спасибо за информацию.
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 10.01.08 10:53
http://www.cpearson.com/excel/weeknum.htm
Номер ответа: 2
Автор ответа:
Таня
ICQ: 410031407
Вопросов: 11
Ответов: 23
Профиль | | #2
Добавлено: 10.01.08 11:20
спасибо за сайт, но можно пояснить, что именно нужно для определения номера недели. Спасибо
Номер ответа: 3
Автор ответа:
Таня
ICQ: 410031407
Вопросов: 11
Ответов: 23
Профиль | | #3
Добавлено: 10.01.08 11:36
Помогите с определением номера недели, плиз
Номер ответа: 4
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #4
Добавлено: 10.01.08 11:43
Private Function Week(dteValue As Date) As Integer
'Monday is set as first day of week
Dim lngDate As Long
Dim intWeek As Integer
'If january 1. is later then thursday, january 1. is not in week 1
If Not Weekday("01/01/" & Year(dteValue), vbMonday) > 4 Then
intWeek = 1
Else
intWeek = 0
End If
'Sets long-value for january 1.
lngDate = CLng(CDate("01/01/" & Year(dteValue)))
'Finds the first monday of year
lngDate = lngDate + (8 - Weekday("01/01/" & Year(dteValue), vbMonday))
'Increases week by week until set date is passed
While Not lngDate > CLng(CDate(dteValue))
intWeek = intWeek + 1
lngDate = lngDate + 7
Wend
'If the date set is not in week 1, this finds latest week previous year
If intWeek = 0 Then
intWeek = Week("31/12/" & Year(dteValue) - 1)
End If
Week = intWeek
End Function
msgbox "Сейчас идёт " & CStr(Week(Now)) & " неделя."
Как-то так.
Номер ответа: 5
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #5
Добавлено: 10.01.08 12:13
format(date,"ww"
Номер ответа: 6
Автор ответа:
Таня
ICQ: 410031407
Вопросов: 11
Ответов: 23
Профиль | | #6
Добавлено: 10.01.08 12:20
Pashenko, спасибо огромное за помощь, все оказалось очень просто, еще раз спасибки. Таня
Номер ответа: 7
Автор ответа:
Таня
ICQ: 410031407
Вопросов: 11
Ответов: 23
Профиль | | #7
Добавлено: 10.01.08 12:21
Вечный Юзер!
Тебе тоже мой респект, благодарю за помощь. Буду обращаться. Таня
Номер ответа: 8
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #8
Добавлено: 10.01.08 12:31
Я сделал так:
1. Создал книгу, в которой семь листов с названиями Пн,Вт,Ср,Чт,Пт,Сб,Вс
2. В модуле книги разместил такой код:
Private Sub Workbook_Open()
Dim s() As String
s = Split("Пн,Вт,Ср,Чт,Пт,Сб,Вс", ",", 7)
ThisWorkbook.Worksheets(s(Weekday(Now(), vbMonday) - 1)).Activate
End Sub
Всё
Номер ответа: 9
Автор ответа:
Таня
ICQ: 410031407
Вопросов: 11
Ответов: 23
Профиль | | #9
Добавлено: 10.01.08 12:38
спасибки конечно, но это что касается дня недели, а меня интересует номер недели
Номер ответа: 10
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #10
Добавлено: 10.01.08 13:07
Перепутал значит. Номер недели надо иначе, собственно это я сделал в своём календаре dzp на ассемблере. Существует несколько распространённых способов нумерации недель. Пример User Unknown основывается на предположении о том, что первой неделей в году является та, где есть первый четверг года. Про способ от Pashenko, я не знаю, на чем оно основывается. Подробнее о нумерациях недель написано на
http://www.comtech-print.ru/etc/numeration_weeks.html