2013-03-01 3 views
0

Я хочу скрыть некоторые строки в листе, если ячейка в столбце A содержит 0. Это вычисляется по формуле.Скрыть строки на основе данных ячейки

E.g. Если A1 содержит значение «0», строка №1 должна быть скрыта.

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

Есть ли хороший способ достичь того же, не нарушая производительность файла?

ответ

2

Вы всегда можете использовать filter для достижения этой цели. Я думаю, что это будет намного более эффективно.

Edit: Чтобы улучшить производительность вашего кода, вы можете сделать следующее:

  1. Выключите Событий
  2. Выключите Вычисления

Перед запуском цикла в скрыть строки

With Excel.Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
    .Calculation = xlCalculationManual 
    .Cursor = xlWait 
End With 

После петли над

With Excel.Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
    .Calculation = xlCalculationAutomatic 
    .Cursor = xlDefault 
End With 

Надеется, что это помогает. Также явно использование переменных может привести к повышению производительности и вычислению. Хотя явное объявление ваших переменных также должно помочь.

+0

Да, но это не так, но я не хочу, чтобы пользователь видел, что данные отфильтровываются и не позволяют им изменять фильтр данных. Можно ли использовать код? – Tejas

+0

Можете ли вы разместить свой код скрытых строк? – Konstant

+0

Не ответ - должен был быть размещен как комментарий – brettdj