Страницы: 1
RSS
Перебор диапазона в макроса
 
Здравствуйте, есть код который перебирает строки 8-9 столбец А и если там стоит 0, то скрывает эти строки
Код
Dim i&
    For i = 8 To 9
        If Range("A" & i).Value = 0 Then
            Rows(i).EntireRow.hidden = True
        Else
            Rows(i).EntireRow.hidden = False
        End If
    Next i
Как можно переработать этот код чтобы он перебирал разные диапазоны строк, например: 8-9 потом 170-171, 332-333 и так далее??
Сразу весь диапазон с 8 по 333 перебирать не представляется возможным, так как тогда код работает долго

Заранее спасибо
Изменено: web-master - 23.08.2017 14:12:01
 
Код
for i= 8 to 1000 step 162
  If cells(i,1) = 0 Then Rows(i).EntireRow.hidden
  If cells(i+1,1)= 0 Then Rows(i+1).EntireRow.hidden
next
            
Изменено: Владимир - 23.08.2017 14:35:08
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
FB_1507163322695379, перебирайте в массиве, а не обращайтесь каждый раз к ячейке
 
Владимир, вроде ТС требовалось так:
Код
for i= 8 to 1000 step 162
  Rows(i).EntireRow.hidden = (cells(i,1) = 0)
  Rows(i+1).EntireRow.hidden = (cells(i+1,1) = 0)
next
:)  
 
Напрягло вот это:
Цитата
FB_1507163322695379 написал:
Сразу весь диапазон с 8 по 333 перебирать не представляется возможным
Так надо весь, или с шагом 162? И пример согласно Правил не помешал бы.
Я сам - дурнее всякого примера! ...
 
Я так понял, что весь нужно перебрать )
 
Пока автор не признается, писать нет желания :)
Я сам - дурнее всякого примера! ...
 
Цитата
FB_1507163322695379 написал:
Сразу весь диапазон с 8 по 333 перебирать не представляется возможным, так как тогда код работает долго
отталкиваюсь от этого: автор перебрал бы с радостью весь диапазон, но уж больно долго )
 
Я тоже об этом писал в №5. Но пусть ТС сам скажет. Гадание, это не мое)
Я сам - дурнее всякого примера! ...
 
Не совсем по теме, но всё же. В чём смысл использования EntireRow, если указывается номер строки?
Rows(i).Hidden = True  по-моему вполне достаточно. EntireRow нужно было бы, если бы указывалась ячейка или диапазон, а скрыть нужно строку целиком, в которой эта ячейка или диапазон находится, например Cells(i,1).EntireRow.Hidden=True.
Страницы: 1
Наверх