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

Вход

Регистрация

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

 

= Мир MS Excel/Как можно ускорить работу макроса на скрытие строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как можно ускорить работу макроса на скрытие строк (Макросы/Sub)
Как можно ускорить работу макроса на скрытие строк
graff9540 Дата: Воскресенье, 05.03.2023, 14:47 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Всем привет!
Подскажите пожалуйста, как можно ускорить работу макроса:
[vba]
Код
Sub СкрытьСтроки_х()
    If ActiveSheet.ListObjects.Count = 0 Then Exit Sub
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.EntireRow.Hidden = False
    Dim tb As ListObject
    For Each tb In ActiveSheet.ListObjects
        JobTb tb
    Next
    Application.ScreenUpdating = True
End Sub

Private Sub JobTb(tb As ListObject)
    Dim flag As Boolean
    Dim cl As Range
    For Each cl In tb.DataBodyRange.Columns(1).Cells
        flag = False
        If cl.Cells(1, 17).Value = "скрыть" Then
            flag = True
        End If
        Select Case cl.Interior.Color
        Case 11389944, 14277081
        Case Else
            flag = True
        End Select
         
        If flag Then cl.EntireRow.Hidden = True
    Next
End Sub
[/vba]
Суть вопроса заключается в том, что при наличии в "умной таблице" более 3 500 тыс. строк он, макрос, очень долго скрывает строки - более 5 минут.
Файл не выкладываю, т.к. его объем велик, а если прикрепить урезанный вариант, то скорость работы макроса сложно будет оценить.
Спасибо.
 
Ответить
СообщениеВсем привет!
Подскажите пожалуйста, как можно ускорить работу макроса:
[vba]
Код
Sub СкрытьСтроки_х()
    If ActiveSheet.ListObjects.Count = 0 Then Exit Sub
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.EntireRow.Hidden = False
    Dim tb As ListObject
    For Each tb In ActiveSheet.ListObjects
        JobTb tb
    Next
    Application.ScreenUpdating = True
End Sub

Private Sub JobTb(tb As ListObject)
    Dim flag As Boolean
    Dim cl As Range
    For Each cl In tb.DataBodyRange.Columns(1).Cells
        flag = False
        If cl.Cells(1, 17).Value = "скрыть" Then
            flag = True
        End If
        Select Case cl.Interior.Color
        Case 11389944, 14277081
        Case Else
            flag = True
        End Select
         
        If flag Then cl.EntireRow.Hidden = True
    Next
End Sub
[/vba]
Суть вопроса заключается в том, что при наличии в "умной таблице" более 3 500 тыс. строк он, макрос, очень долго скрывает строки - более 5 минут.
Файл не выкладываю, т.к. его объем велик, а если прикрепить урезанный вариант, то скорость работы макроса сложно будет оценить.
Спасибо.

Автор - graff9540
Дата добавления - 05.03.2023 в 14:47
graff9540 Дата: Воскресенье, 05.03.2023, 15:27 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

 
Ответить
СообщениеКросс

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

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