VBA Excel 2007 помогает ускорить код, чтобы скрыть строки

Я пытаюсь написать код VBA, который автоматически скрывает строки, если значение в строке равно «». Мой диапазон значений: A37: A400. Поскольку мой диапазон настолько велик, что мой предыдущий VbA должен замедляться и выглядит по одной линии за раз. Любые идеи сделать быстрый код, который будет проходить через этот большой список и быстро скрыть строки. Прямо сейчас, чтобы скрыть слишком длинные строки, требуется около минуты.

Sub HideRows() Dim cell As Range For Each cell In Range("A37:A400") If Not IsEmpty(cell) Then If cell.Value = "" Then cell.EntireRow.Hidden = True End If End If Next End Sub 

Попробуйте добавить Application.ScreenUpdating = False непосредственно перед вашим скрытым кодом и добавьте Application.ScreenUpdating = True после вашего скрытого кода. Обычно этот трюк ускоряет большинство макросов VBA примерно на 10 раз, потому что приложение не должно продолжать перерисовывать себя по мере запуска кода.

Это должно помочь в вашем случае, потому что вы проверяете каждую ячейку индивидуально и скрываете строку отдельно от выполнения пакетного скрытия строк.

Я не вижу, как работает ваш код.

У вас есть следующие 2 строки

 If Not IsEmpty(cell) Then If cell.Value = "" Then 

Если первая строка не пуста, то вторая строка всегда будет возвращать значение false. В первой строке говорится «если ячейка не пуста», а следующая строка говорит «если строка пуста» … Ну, уже было оценено, что она не пуста. Поэтому вам никогда не удастся скрыть строку, чтобы я потерялся относительно того, как работает ваш код. Я подозреваю, что что-то еще происходит вне кода, но …

Однако это отлично работает на моей машине

 Sub Button1_Click() Dim cell As Range For Each cell In Range("A1:A1600") If cell.Value = "" Then cell.EntireRow.Hidden = True End If Next End Sub 

У меня 1600 строк, для выполнения требуется 5 секунд

  • VBA извлекает данные XML в Excel
  • Цикл через таблицы Excel
  • Сохранение файла Excel в формате .txt без кавычек
  • Выражение основных критериев запроса доступа в виде регулярных выражений
  • Открыть файл Excel для чтения с помощью VBA без отображения
  • Различие между использованием .text и .value в VBA Access
  • Можно ли программным образом передавать параметры в запросе на обновление Microsoft Access?
  • Макрос для экспорта таблиц MS Word в листы Excel
  • Сохранение нескольких листов в .pdf
  • Показывать временную метку при изменении ячейки
  • Импорт веб-данных в Excel с использованием VBA
  • Давайте будем гением компьютера.