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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 14:34   #11
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
только заглавными буквами: ЯНВАРЬ
А, вот в чем проблема, час поменяю все на заглавные
valerij вне форума
Старый 04.01.2011, 14:42   #12
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Так, наверное:
Код:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    On Error Resume Next
    Me.Worksheets(Format(Now, "MMMM")).Visible = True
    If Err <> 0 Then Me.Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = UCase(Format(Now, "MMMM"))
    For Each ws In Me.Worksheets
        ws.Visible = ws.Name = UCase(Format(Now, "MMMM"))
    Next
    Application.ScreenUpdating = True
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума
Старый 04.01.2011, 15:01   #13
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Так, наверное
Так тоже работает, изменил все на заглавные и мс Игоря заработал.
Меня терзает смутные сомнения, что придется оставлять прошедший месяц, т. е. на улице ФЕВРАЛЬ, лист январь, будет скрыт, а захочется заглянуть, как там было в ЯНВАРЕ.
Как предусмотреть, такую возможность?
valerij вне форума
Старый 04.01.2011, 15:16   #14
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    On Error Resume Next
    Me.Worksheets(Format(Now, "MMMM")).Visible = True
    If Err <> 0 Then Me.Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = UCase(Format(Now, "MMMM"))
    For Each ws In Me.Worksheets
        ws.Visible = ws.Name = UCase(Format(Now, "MMMM")) _
        Or ws.Name = UCase(Format(DateSerial(Year(Now), Month(Now) - 1, 1), "MMMM"))
    Next
    Application.ScreenUpdating = True
End Sub
Если нет листа с названием текущего месяца, код Игоря выдаст ошибку. Я к его коду добавил проверку на наличие нужного листа(и при отсутствии такового - вставку). Он сработает даже если в книге нет листов с названиями месяцев. Попробуйте.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 04.01.2011 в 15:29.
kuklp вне форума
Старый 04.01.2011, 15:27   #15
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Если нет листа с названием текущего месяца, код Игоря выдаст ошибку. Я к его коду добавил проверку на наличие нужного листа(и при отсутствии такового - вставку).
Все работает
ВСЕМ
С П А С И Б О !!!!!!
valerij вне форума
Старый 04.01.2011, 15:31   #16
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Исправьте строку:
DateSerial(Year(Now), Month(Now) - 1, 1)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума
Старый 04.01.2011, 15:46   #17
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Исправьте строку:
DateSerial(Year(Now), Month(Now) - 1, 1)
kuklp
А что там??
valerij вне форума
Старый 04.01.2011, 16:30   #18
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

В начальном варианте было:
DateSerial(Year(Now), Month(Now) - 1, Day(now))
В феврале 28 дней, а в марте 31. Не проверял, но может выдать 30 марта январь месяц или ошибку. А так:
DateSerial(Year(Now), Month(Now) - 1, 1) - точно не выдаст, выдаст февраль, независимо от текущего числа.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 04.01.2011 в 16:33.
kuklp вне форума
Старый 04.01.2011, 16:39   #19
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

лучше так Сергей
UCase(Format(DateAdd("m", -1, Date), "MMMM"))
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума
Старый 04.01.2011, 16:59   #20
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Дим, а лучше чем?:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скрыть все листы в ЕКСЕЛЕ кроме определенного списка sasha_prof Microsoft Office Excel 2 03.12.2010 21:09
Скрыть Листы по условию valerij Microsoft Office Excel 15 20.04.2010 19:32
На водительские права учиться 6 месяцев! :) Alar Свободное общение 19 07.04.2010 13:33
Две оси на двух активных разделах alex55 Операционные системы общие вопросы 22 17.05.2009 19:09
Скрыть листы по запросу RUBEY Microsoft Office Excel 23 16.01.2009 13:40