Спрятать строки очень медленно - PullRequest
0 голосов
/ 24 апреля 2020

У меня проблемы со скрытием строк на листе, и я надеялся получить какой-нибудь совет. Всего на листе 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

Я провел следующие тесты, чтобы попытаться определить проблему (чтобы повторить, я я только взял шаблон, я не сделал этого, поэтому мне нужно проверить все):

  1. Я удалил все условное форматирование, чтобы посмотреть, идет ли оно отсюда, и сокрытие строк одинаково медленно .
  2. Я восстановил файл и заменил все формулы значениями, а время обработки сократилось с 30 до примерно 3 секунд, поэтому в формулах определенно что-то замедляет его.

Но теперь я спрашиваю вас, ребята: Application.Calculation имеет значение xlCalculationManual, так какие формулы все еще рассчитываются в этом случае?

...