Всем привет! Подскажите пожалуйста, как можно ускорить работу макроса: [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