Страницы: 1
RSS
VBA скрытие нескольких строк в диапазоне
 
Добрый день!
Просьба помочь в написании макроса
Суть такая, есть определенные строки в документе, по умолчанию они скрыты (7:22). Необходимо чтобы при выполнении макроса отображались первые 4 строки из скрытых. При последующем выполнении этого же макроса отображались следующие 4 строки. И так далее.  Макрос должен работать только в этом диапазоне строк (c 7 по 22).
 
судя по Вашему описанию, можно макрорекордером записать,
если я не прв извените, т.к. файл не смотрел.
 
В ячейку А1 запишите 7 - первая строка блока
Затем запускайте макрос
Код
Sub iHide()
Dim FirstRow As Integer
    FirstRow = Range("A1")
    Rows("7:22").Hidden = True
    Rows(FirstRow & ":" & FirstRow + 3).Hidden = False
    Range("A1") = FirstRow + 4
    If Range("A1") = 23 Then Range("A1") = 7
End Sub
 
кнопка цитирования не для ответа [МОДЕРАТОР]
Спасибо. Но только при повторном запуске макроса необходимо чтобы предыдущее не скрывалось
Изменено: Sorov - 06.07.2016 21:15:12
 
Цитата
чтобы предыдущее не скрывалось
Код
Sub iHide()
Dim FirstRow As Integer
    FirstRow = Range("A1")
    Rows("7:22").Hidden = True
    Rows("7:" & FirstRow + 3).Hidden = False
    Range("A1") = FirstRow + 4
    If Range("A1") = 23 Then
      Range("A1") = 7
      Rows("7:22").Hidden = True
    End If
End Sub
 
Можно обойтись без использования ячейки листа:
Код
Sub qq()
    Static i As Integer
    i = IIf(i = 0, 7, i + 4)
    Rows(7 & ":" & i + 3).Hidden = False
    If i > 22 Then
        Rows("7:22").Hidden = True: i = 0
    End If
End Sub
Пример во вложении.
Чем шире угол зрения, тем он тупее.
 
Kuzmich,
Цитата
Kuzmich написал: If Range("A1") = 23 Then
23 заменил на 27, чтобы четвертый цикл появлялся.... и все.
Спасибо за помощь!
 
SAS888, тоже спасибо!
 
Тема: "... скрытие ..." ;)
типа оффтоп
Можно в цикле с шагом 4 проверять строку на видимость и, если она скрыта, то отображать её + 3 последующие строки и останавливать выполнение макроса. Такой макрос будет продолжать начатое даже после перезапуска эксель при отображённых первых 8и строках (например). После цикла можно добавить скрытие всех строк 7-22 (которое выполнится только, когда макросу нечего будет отображать). Т.е. есть возможность "без лишних телодвижений" сделать бесконечное последовательное выполнение:
Код
Отображение строк 7-10;
Отображение строк 11-14;
Отображение строк 15-18;
Отображение строк 19-22;
Скрытие строк 7-22;
...
Которое будет продолжаться с любого этапа (если при закрытии документа сохранить начатое) ;)
Тут, правда, ещё возникает вопрос "необходимо ли это заказчику?"... :)
Изменено: Ренат - 07.07.2016 06:59:36 (добавил вопрос о необходимости... поправил шаг цикла)
Успехов. И мне того же. Благодарю. :)
 
Цитата
Ренат написал: в цикле с шагом 3
*с шагом 4...  :oops:
Исправил(ся).
Успехов. И мне того же. Благодарю. :)
Страницы: 1
Наверх