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

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

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

Восстановить пароль
Повторная активизация e-mail

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

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

Как мне в этом иакросе, Скрыть Листы, не активных месяцев?
Код:
Private Sub Workbook_Open()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
'************************** Переключиться на Лист, текущего месяца *****************************
             On Error Resume Next
  Sheets(MonthRus(Month(Now))).Select
  If Err.Number > 0 Then
    Err.Clear
    Sheets(MonthRus(Month(Now) - 1)).Select
    If Err.Number > 0 Then ShN = Sheets.Count Else ShN = _
            Sheets(MonthRus(Month(Now) - 1)).Index
    Sheets.Add After:=Sheets(ShN)
    Sheets(ShN + 1).Name = MonthRus(Month(Now))
  End If
'************************************************************************************************
            .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Function MonthRus(m) As String
    Select Case m
        Case 1:  MonthRus = "ЯНВАРЬ"
        Case 2:  MonthRus = "ФЕВРАЛЬ"
        Case 3:  MonthRus = "МАРТ"
        Case 4:  MonthRus = "АПРЕЛЬ"
        Case 5:  MonthRus = "МАЙ"
        Case 6:  MonthRus = "ИЮНЬ"
        Case 7:  MonthRus = "ИЮЛЬ"
        Case 8:  MonthRus = "АВГУСТ"
        Case 9:  MonthRus = "СЕНТЯБРЬ"
        Case 10: MonthRus = "ОКТЯБРЬ"
        Case 11: MonthRus = "НОЯБРЬ"
        Case 12: MonthRus = "ДЕКАБРЬ"
    End Select
End Function
valerij вне форума
Старый 04.01.2011, 13:23   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Валера, а что такое - "неактивный месяц"?

К примеру, январь - активный? А март? А ноябрь? Почему?
EducatedFool вне форума
Старый 04.01.2011, 13:30   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
    Sheets(ShN + 1).Name = MonthRus(Month(Now))
  End If
'***************************************
For Each ws In Me.Worksheets
If ws.Name <> MonthRus(Month(Now)) Then
ws.Visible = 0 'ну или 2(очень скрытый)
Next
И далее по тексту
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума
Старый 04.01.2011, 13:41   #4
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Код:
    Sheets(ShN + 1).Name = MonthRus(Month(Now))
  End If
'***************************************
For Each ws In Me.Worksheets
If ws.Name <> MonthRus(Month(Now)) Then
ws.Visible = 0 'ну или 2(очень скрытый)
Next
И далее по тексту
kuklp!
Ошибка, исправил, но листы скрывает, но не те, оставляет Декабрь и при последующих запусках, ставит Лист1, Лист2 .....
Код:
Sheets(ShN + 1).Name = MonthRus(Month(Now))
End If
'***************************************
    For Each ws In Me.Worksheets
If ws.Name <> MonthRus(Month(Now)) Then
    ws.Visible = 0 'ну или 2(очень скрытый)
End If
    Next
Игорь, другие меня понимают, а ты, нет, какой сегодня месяц, активный или не активный?

Последний раз редактировалось valerij; 04.01.2011 в 13:52.
valerij вне форума
Старый 04.01.2011, 13:53   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

У меня скрывает, запустил в новой книге создало Январь, а три других скрыло:
Private Sub Workbook_Open()
With Application
.ScreenUpdating = False
.EnableEvents = False
'************************** Переключиться на Лист, текущего месяца *****************************
On Error Resume Next
Sheets(MonthRus(Month(Now))).Select
If Err.Number > 0 Then
Err.Clear
Sheets(MonthRus(Month(Now) - 1)).Select
If Err.Number > 0 Then ShN = Sheets.Count Else ShN = _
Sheets(MonthRus(Month(Now) - 1)).Index
Sheets.Add After:=Sheets(ShN)
Sheets(ShN + 1).Name = MonthRus(Month(Now))
End If
For Each ws In Me.Worksheets
If ws.Name <> MonthRus(Month(Now)) Then
ws.Visible = 0 'ну или 2(очень скрытый)
End If
Next
'********************************** *********************************** ***************************
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Только я бы сначала делал Все листы видимыми, а потом уж скрывал ненужные. Иначе будут ошибки.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

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

Цитата:
Сообщение от kuklp Посмотреть сообщение
Только я бы сначала делал Все листы видимыми, а потом уж скрывал ненужные. Иначе будут ошибки.
Да, ошибки, сделал так, может мона проще??
Код:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Макрос2
    Me.Worksheets(MonthName(Month(Date))).Select
    Application.ScreenUpdating = True
        For Each ws In Me.Worksheets
If ws.Name <> MonthName(Month(Date)) Then
    ws.Visible = 0 'ну или 2(очень скрытый)
End If
       Next
End Sub
Макрос2
Код:
Sub Макрос2()
    Sheets("Январь").Visible = True
    Sheets("Февраль").Visible = True
    Sheets("Март").Visible = True
    Sheets("Апрель").Visible = True
    Sheets("Май").Visible = True
    Sheets("Июнь").Visible = True
    Sheets("Июль").Visible = True
    Sheets("Август").Visible = True
    Sheets("Сентябрь").Visible = True
    Sheets("Октябрь").Visible = True
    Sheets("Ноябрь").Visible = True
    Sheets("Декабрь").Visible = True
End Sub
valerij вне форума
Старый 04.01.2011, 14:15   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Me.Worksheets(Format(Now, "MMMM")).Visible = True
    For Each ws In Me.Worksheets
        ws.Visible = ws.Name = UCase(Format(Now, "MMMM"))
    Next
End Sub
EducatedFool вне форума
Старый 04.01.2011, 14:23   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код:
ws.Visible = ws.Name = UCase(Format(Now, "MMMM"))
Здесь ошибка, что такое "MMMM"
valerij вне форума
Старый 04.01.2011, 14:25   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Format(Now, "MMMM") - возвращает название текущего месяца: Январь
UCase(Format(Now, "MMMM")) - то же название, только заглавными буквами: ЯНВАРЬ

По крайней мере, на моём компе (где установлен русский Office)
EducatedFool вне форума
Старый 04.01.2011, 14:27   #10
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