Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скрыть столбцы в зависимости от даты (производительность) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть столбцы в зависимости от даты (производительность) (Макросы/Sub)
Скрыть столбцы в зависимости от даты (производительность)
user0 Дата: Понедельник, 12.12.2016, 02:21 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
День добрый,

Сделал на vba скрытие столбцов с датами (~1500 столбцов), чтобы оставались видимыми только в заданом диапазоне (в примере - 10 дней от сегодня). Скрытие происходит каждый раз при изменении значейний в A2:B2, при этом перед сктытием открываются все столбцы. Скрытие происходит через ColumnWidth = 0.

Вопрос: это только у меня оно подтормаживает (от 3-5-15 сек) или так и должно быть? Есть ли способ ускорить этот макрос?

К сообщению приложен файл: days_to_show.xlsm (64.4 Kb)


Сообщение отредактировал user0 - Понедельник, 12.12.2016, 02:23
 
Ответить
СообщениеДень добрый,

Сделал на vba скрытие столбцов с датами (~1500 столбцов), чтобы оставались видимыми только в заданом диапазоне (в примере - 10 дней от сегодня). Скрытие происходит каждый раз при изменении значейний в A2:B2, при этом перед сктытием открываются все столбцы. Скрытие происходит через ColumnWidth = 0.

Вопрос: это только у меня оно подтормаживает (от 3-5-15 сек) или так и должно быть? Есть ли способ ускорить этот макрос?


Автор - user0
Дата добавления - 12.12.2016 в 02:21
_Boroda_ Дата: Понедельник, 12.12.2016, 02:59 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
перед сктытием открываются все столбцы

А если наоборот - все скрывать, а потом нужное открывать? И не циклом, а все сразу.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim st0_, a_, b_
    If Not Application.Intersect(Range("A2:B2"), Target) Is Nothing Then
        a_ = Range("A2")
        b_ = Range("B2")
        If a_ = "" Or b_ = "" Then Exit Sub
        If Not IsDate(a_) Or Not IsNumeric(b_) Then Exit Sub
        On Error Resume Next
        Application.ScreenUpdating = 0
        Range("dates").EntireColumn.Hidden = True
        st0_ = 3 + a_ - Range("C2")
        Cells(2, st0_).Resize(, b_).EntireColumn.Hidden = False
        Application.ScreenUpdating = 1
    End If
End Sub
[/vba]
К сообщению приложен файл: days_to_show_1.xlsm (59.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
перед сктытием открываются все столбцы

А если наоборот - все скрывать, а потом нужное открывать? И не циклом, а все сразу.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim st0_, a_, b_
    If Not Application.Intersect(Range("A2:B2"), Target) Is Nothing Then
        a_ = Range("A2")
        b_ = Range("B2")
        If a_ = "" Or b_ = "" Then Exit Sub
        If Not IsDate(a_) Or Not IsNumeric(b_) Then Exit Sub
        On Error Resume Next
        Application.ScreenUpdating = 0
        Range("dates").EntireColumn.Hidden = True
        st0_ = 3 + a_ - Range("C2")
        Cells(2, st0_).Resize(, b_).EntireColumn.Hidden = False
        Application.ScreenUpdating = 1
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 12.12.2016 в 02:59
user0 Дата: Понедельник, 12.12.2016, 03:15 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 152
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013, 2016
Да, так намнооого лучше. Спасибо большое.

Меня-то хватило только на корявый вариант, собраный по кусочкам из гугла )
 
Ответить
СообщениеДа, так намнооого лучше. Спасибо большое.

Меня-то хватило только на корявый вариант, собраный по кусочкам из гугла )

Автор - user0
Дата добавления - 12.12.2016 в 03:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть столбцы в зависимости от даты (производительность) (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!