У меня проблемы со скрытием строк на листе, и я надеялся получить какой-нибудь совет. Всего на листе 1380 строк, и он доходит до столбца DM, поэтому он не велик. 1380 строк разделены на секции, распознаваемые именованными диапазонами (например, GOTO_GA) внутри диапазона имен, который содержит все (_FilterDatabase), и мне нужно показать каждый раздел отдельно, нажав несколько кнопок вверху. Я делаю это, скрывая _FilterDatabase и скрывая только GOTO_GA.
Проблема в том, что даже если я отключаю все, что могу придумать, см. Код ниже, rngToHide.Hidden = True
все еще очень медленный, 30 секунд.
Есть ли что-то еще, что я мог бы изучить, чтобы ускорить его?
Sub testHideRows()
Dim rngToHide As Range, rngToShow As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
ActiveSheet.DisplayPageBreaks = False
Set rngToHide = Range("_FilterDatabase").EntireRow '1273 ROWS
Set rngToShow = Range("GOTO_GA").EntireRow '16 ROWS , INCLUDED IN rngToShow
TIME0 = Now()
rngToHide.Hidden = True 'THIS IS EXTREMLY SLOW 28 SECONDS
TIME1 = Now()
Debug.Print Format(TIME1 - TIME0, "hh:NN:SS")
rngToShow.Hidden = False 'THIS IS INSTANT
setProgramAlertsOn
End Sub
Я провел следующие тесты, чтобы попытаться определить проблему (чтобы повторить, я я только взял шаблон, я не сделал этого, поэтому мне нужно проверить все):
- Я удалил все условное форматирование, чтобы посмотреть, идет ли оно отсюда, и сокрытие строк одинаково медленно .
- Я восстановил файл и заменил все формулы значениями, а время обработки сократилось с 30 до примерно 3 секунд, поэтому в формулах определенно что-то замедляет его.
Но теперь я спрашиваю вас, ребята: Application.Calculation имеет значение xlCalculationManual, так какие формулы все еще рассчитываются в этом случае?