Страницы: 1
RSS
Скрытие строк по условию
 
Доброго вечера Уважаемые мэтры VBA Прошу помощи разобраться с кодом. Цель кода при нулевом значении или пусто Ячейки N11 (Лис тИД) скрывается строка  

А12:Т12 на листе 2. Прошу подправить код и прокоментировать его. Заранее спасибо

Код
Private Sub Worksheet_Activate()
Dim LastRow As Long, i As Long
    Application.ScreenUpdating = False
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Rows("3:" & LastRow).EntireRow.Hidden = False
    For i = 3 To LastRow
        If Cells(i, 2) = 0 Then Rows(i).Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub
Изменено: alex1210 - 26.09.2017 16:58:49
 
скрывать всегда только одну строку (12) в зависимоcти от n11?
 
V,доброго времени. Нет там будет еще куча строк которые будут скрываться по такой аналогии  
 
для лист1 если строки постоянны
Код
Private Sub Worksheet_Activate() 'макрос срабатывает при активации листа
Rows("11:14").Hidden = (Sheets("ИД").Range("N11") = "")
End Sub

для лист2 по аналогии.

если не приспособите, то сделайте пример с несколькими строками, а не с одной как в данном примере. И описание согласно примера.

П,С, если будете скрывать строки то в итого скорей всего понадобится ф-ция ПРОМЕЖУТОЧНЫЕ.ИТОГИ вместо СУММ.
Изменено: V - 26.09.2017 17:39:44
 
V, Спасибо большое, подскажите логику строки.  
Код
Rows("11:14").Hidden = (Sheets("ИД").Range("N11") = "")
 
Rows("11:14").Hidden = (False или True) - строки "11:14" скрыть = (нет или да)
Для скрытия строк с правой стороны выражения нам нужно получить True, для этого проверяем ячейку (Range("N11")) листа (Sheets("ИД")) на пусто
Sheets("ИД").Range("N11") = ""
""=""
True
чтобы не писать доп строк пишем все в одной строке.

Как то так.
 
V, извините на настырность но хотелось бы понять, как добавить еще код для строки  скрытия открытия. Если N49 пусто то скрываем сна листе строку 6 и на листе строку 3. и Если N59 на странице ИД пусто то скрываем на листе 1 строку 13 и на листе 2 строку 26. Заранее благодарен
 
в модуль листа ИД, из второго листа код убираем.
Код
Private Sub Worksheet_Deactivate()

Sheets("Лист1").Rows("6:6").Hidden = (Sheets("ИД").Range("N49") = "")
Sheets("Лист1").Rows("13:13").Hidden = (Sheets("ИД").Range("N59") = "")
Sheets("Лист2").Rows("3:3").Hidden = (Sheets("ИД").Range("N49") = "")
Sheets("Лист2").Rows("26:26").Hidden = (Sheets("ИД").Range("N59") = "")
End Sub

если знать все строки то можно и в цикле попробовать записать.
Изменено: V - 26.09.2017 18:51:47
 
V, спасибо огромное. А Вы не смогли бы подсказать как будет выглядеть цикл. Я постараюсь собрать все строки, но чтобы не злоупотреблять Вашим временем хотел бы понять и доработать его сам.  
 
для цикла нужно выявить некую закономерность и под неё писать. Пока что этой закономерности не видно.
 
V, спасибо огромное, всё работает, со всем разобрался. Скорее всего цикл не получится, потому что в ручную отмечаешь какие документы надо а какие нет. Подскажите пожалуйста, а какой надо код добавить чтобы не только открывались строки но и копировалось значение из проверяемой ячейки в открываемую строку. Например если ячейка N59 открывает строку 13 в листе 1 то и прописует туда текст из ячейки N59 в ячейку E13 листа 1 и из V59 в лист 2 ячейку I26
Страницы: 1
Наверх