Страницы: 1
RSS
Скрытие пустых строк
 
Уважаемые участники форума. На другом форуме нашел макрос который скрывает пустые (со значением 0) ячейки. У меня динамическая таблица которая формируется из других источников книги. по условиям которой, если нет нужного значения то ставится "" (пробел). В данном случае макрос не работает. Я понимаю, что в коде макроса надо вместо 0 поставить пробел. Но как это сделать я не знаю. Прошу Вашей помощи. Файл немного переделанный под свои условия прилагаю.
 
А что именно непонятно - как в макроредактор попасть или где значение 0 на "" заменить?
 
Я код открывал. менял в нем 0 на "". Не работает.
Sub HideRows()
Dim x(), i&, hr As Range: Application.ScreenUpdating =0
With Range([a1], Cells(Rows.Count, 1).End(xlUp))
    x = .Value
    For i = 3 To UBound(x)
        If x(i, 1) = 0 Then
            If hr Is Nothing Then Set hr = .Cells(i) Else Set hr = Union(hr, .Cells(i))
        End If
    Next i
    .EntireRow.Hidden = False
End With
If Not hr Is Nothing Then hr.EntireRow.Hidden = True
Application.ScreenUpdating = 1
End Sub
 
И где же Вы замену сделали? Нужно здесь: If x(i, 1) = "" Then
 
Укоротим.
Sub HideRows_1()
Application.ScreenUpdating = 0
Set r = Range([a1], Cells(Rows.Count, 1).End(xlUp))
For Each x In r
x.EntireRow.Hidden = (x = "")
Next
'r.EntireRow.Hidden = False
Application.ScreenUpdating = 1
End Sub
 
Спасибо. Оба варианта работают замечательно. Как сделать обратно. (отобразить скрытые строки)
А ещё лучше Было бы если бы при изменении динамического диапазона, эта процедура выполнялась сама. Т.е. скрывала пустые строки при текущих условиях. Такое возможно или нет?
 
В варианте ув. Карена (k61) для отображения всех строк раскоментируйте строку r.EntireRow.Hidden = False. Изменение динамического диапазона - какого? Что там меняется?
 
Во вложенном файле применены оба предложенных выше варианта. В столбце A:A для примера заложена формула, диапазон действия которой может меняться.
 
Диапазон действия Вашей формулы как раз постоянен - A1:A28. Еще раз спрошу: что меняется?
 
попробуйте так:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Then Exit Sub
On Error Resume Next
Range("A1", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeFormulas, 2).EntireRow.Hidden = True
End Sub
 
Всем большое спасибо за отклик. Но Вы меня немного не правильно понимаете. Для этого сделал пример более менее похожий на реальную задачу. Все написано в примере.
Условия теже самые автоматическое формирование таблицы. (Скрытие и отображение строк в зависимости от изменения диапазона таблицы)
 
Сергей, из примера вытекает, что нужно скрыть строки 7:30... Вы хотите автоматизировать скрытие/отображение. Вопрос - как собираетесь в скрытую строку вводить данные?
 
Уточнюсь: строки 6:35 на первом листе. С листом Отчет всё понятно. Или же скрывать только на втором листе?
 
Он хочет на листе 1(форма) вводить данные, они копируются на лист 2, при этом должна открыться строка, если удалить данные из формы строка прячется. В итоге 2 одинаковых листа - один заполнен ручками, второй макросом и формулами )))
 
Вариант без формул.
 
Юрий мне Ваш вариант понравился. Все как доктор прописал. Маленький нюанс не касающийся на прямую этой темы. У меня формулы выбирали то оборудование, которое было выведено в ремонт в отчетное время (в данном случае 12.12.12) Можно это решить макросом?
 
Уточните вопрос.
 
У меня в примере в лист (Отчет) выбиралось только то оборудование из листа (Форма) которое выводилось в ремонт в день, дата которого задана ячейкой D1. В данном случае это 12.12.12г.
 
Так?
 
Да так. Супер получилось. Спасибо. Попробую пристроить в отчет.
 
Уважаемые форумчане! Мне очень стыдно, но для применения предложенных вариантов в действующий отчет не хватает знаний. Поэтому прикладываю действующий отчет, сокращенный до минимума чтобы разместить его на форуме. Прошу Вас помочь в этом вопросе. Надо сделать так, чтобы в листе "Сводка суточная" по столбцу "А " пустые строки скрывались, и при заполнении открывались. При этом надо учесть, что данные в этом листе формируются из листа "Накопительная". Идея была такая:Оператор заносит данные по простоям оборудования в лист "Накопительная". Из него формируется сводка за сутки, которая потом рассылается специалистам.
 
Господа! Неужели мне ни кто не поможет. Я так надеялся. :cry:
Страницы: 1
Наверх