У меня не получается занести в массив дни недели. По сути моя задача такая. У меня есть календарь, в нем я задаю период с 10 по 31. Январь 2015 В результате прямо в коде, в массив, хочу занести такие данные: 0, 2, 7, 7, 6, 0 и мой массив не запоминает эти данные, когда я к нему обращаюсь и хочу из него вытащить данные он пуст...
Что бы в дальнейшем их использовать и получить такую табличку: 1 неделя: 0 дней 2 нед : 2 дня 3 нед : 7 дней 4 нед : 7 дней 5 нед : 6 дней 6 нед : 0 дней
И что-то у меня не получается ни как.
Я прилагаю книгу. Можно запустить макрос 1, увидеть что макрос делает. Я использовал найденный в интернете код создание обычного календаря и попытался из этого сделать то что мне нужно. Думал так будет проще. Но ковыряюсь в нем, ковыряюсь и что-то не получается сделать то что хочу.
У меня не получается занести в массив дни недели. По сути моя задача такая. У меня есть календарь, в нем я задаю период с 10 по 31. Январь 2015 В результате прямо в коде, в массив, хочу занести такие данные: 0, 2, 7, 7, 6, 0 и мой массив не запоминает эти данные, когда я к нему обращаюсь и хочу из него вытащить данные он пуст...
Что бы в дальнейшем их использовать и получить такую табличку: 1 неделя: 0 дней 2 нед : 2 дня 3 нед : 7 дней 4 нед : 7 дней 5 нед : 6 дней 6 нед : 0 дней
И что-то у меня не получается ни как.
Я прилагаю книгу. Можно запустить макрос 1, увидеть что макрос делает. Я использовал найденный в интернете код создание обычного календаря и попытался из этого сделать то что мне нужно. Думал так будет проще. Но ковыряюсь в нем, ковыряюсь и что-то не получается сделать то что хочу.lopuxi
Да, там везде сплошные "извращения"... Номер месяца (по его названию) можно было получить проще, одной строкой, например так: [vba]
Код
NumMonth = (InStr("янв фев мар апр май июн июл авг сен окт ноя дек", LCase$(Left$(TargetMount, 3))) - 1) \ 4 + 1
[/vba] а последний день месяца - так: [vba]
Код
dtStop = DateSerial(Year, NumMonth + 1, 0)
[/vba] и не гонять в цикле бессмысленные проверки, типа: [vba]
Код
For iDay = 1 To 31 If IsDate(Str(NumMonth) & "/" & CStr(iDay) & "/" & Val(Year)) Then ' проверка на существование даты
[/vba] но даже если хотите "проверить", то зачем же с 1, если можно было с 29? Или вы всерьез полагаете, что в каком-то месяце будет меньше 28 дней?
Да, там везде сплошные "извращения"... Номер месяца (по его названию) можно было получить проще, одной строкой, например так: [vba]
Код
NumMonth = (InStr("янв фев мар апр май июн июл авг сен окт ноя дек", LCase$(Left$(TargetMount, 3))) - 1) \ 4 + 1
[/vba] а последний день месяца - так: [vba]
Код
dtStop = DateSerial(Year, NumMonth + 1, 0)
[/vba] и не гонять в цикле бессмысленные проверки, типа: [vba]
Код
For iDay = 1 To 31 If IsDate(Str(NumMonth) & "/" & CStr(iDay) & "/" & Val(Year)) Then ' проверка на существование даты
[/vba] но даже если хотите "проверить", то зачем же с 1, если можно было с 29? Или вы всерьез полагаете, что в каком-то месяце будет меньше 28 дней? KSV