Здравствуйте Люди добрые! Пожалуйста помогите оптимизировать макрос. На форуме похожие темы, конечно, есть, но я ни один из примеров не смог применить. Автофильтр для моих целей я тоже не смог применить потому как он работает сразу со всей таблицей, а мне необходима раздельная обработка в четырех диапазонах.
В таблице есть 4 блока товаров. Каждый блок состоит из 30 строк. Для компактности внутри блока пустые строки скрыты, кроме первых двух и последней с итогом. Сконструировал простейший макрос. Работает так - при внесении данных в первую строку по столбцу "F" (Ячейка Cells(5, 6)) "раскрывается" (через Hidden = True) вторая по счёту строка. И наоборот, если целевая ячейка пуста, то вторая по счёту строка скрывается. Весь макрос "сшит" из кусков по типу:
Код |
---|
If Cells(5,6).Value = 0 Then Rows(7).Hidden = True Else Rows(7).Hidden = False End If |
просто последовательно менял номера строк. "Хватило" меня только на один блок. А нужно чтобы все четыре блока так работали. Понимаю, что конструкция примитивная и кроме того макрос привязан к модулю листа через Worksheet_SelectionChange, что серьезно "грузит" систему, стоит только на листе в любом месте ткнуть мышью как идет пересчет ячеек по всему листу. Очень хочется получить цикл с меньшим количеством строк и по возможности привязать к другому менее требовательному к ресурсам "событию". Файлик с макросом прилагаю. Целевой столбец выделен желтым цветом.