Страницы: 1
RSS
Скрытие пустых (незаполненных) строк при печати, Скрытие строк без данных, но с формулами при печати
 
Добрый вечер уважаемые формумчане!
Возникла необходимость скрывать незаполненные строки бланка при печати, для экономии расходных материалов. Прежде создать тему, перечитал много тем похожих на форуме, пересмотрел кучу примеров и готовых решений, но свою проблему так и не решил.

Суть вопроса:
Есть бланк, который заполняется. Нужно скрывать пустые строки этого бланка при печати. Задача усложнена тем, что:
1.  пустые строки не совсем пустые, так как в них есть формулы
2. скрывать нужно не все пустые строки, а только те, которые идут ниже последней заполненной строки. Т.е. пустые строки (разделительные), которые идут между заполненными строками, не должны скрываться. Поэтому макрос, который в файле, определяет последнюю заполненную строку не совсем ту, что нужно. Может в файле наглядней будет.

P.S. Вроде бы потихоньку начинаю вникать в VBA (свойства методы и т.д. и т.п.), а вот собрать до кучи не могу.
Это приблизительно как: Знаешь слова, а предложения составить не можешь.  :)  
Так как исчерпал все возможные варианты, решил обратится к профессионалам. Подскажите какое-нибудь решение. Спасибо!
 
А данные всегда в диапазоне строк 10:40?  
 
Да Юрий М.
Т.е. можно жестко привязать к этому диапазону, таблица меняться ни увеличиваться ни уменьшать не будет.
 
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=44958
Я сам - дурнее всякого примера! ...
 
Так?
 
Извиняюсь что так долго, тестировал.
Юрий М суть вопроса вы правильно поняли и решили его практически так как это нужно. Спасибо большое. Правда в процессе тестирования выявил несколько ошибок.
1.  Т.е. данные, как вы и спрашивали, находятся в диапазоне 10:40, а макрос должен работать в диапазоне 10:39. Строка 40 в расчет не должна входить - это я в файле указывал.
2. И самая существенная ошибка это то, что если заполнить 40 строку, при нажатии кнопки скрыть, скрывается и 40 строка и 41 хоть они и не пустые и в поле действия макроса не должны входить. И уже назад  показать не получается. Как можно это исправить.
Изменено: antal10 - 22.12.2013 21:55:46
 
Ну у Вас ведь есть теперь код, в котором должен быть понятен принцип - попробуйте сами))  
 
Можно без цикла:
Код
Public Sub www()
    If [f10:f40].SpecialCells(12).Count < 31 Then _
       Rows("10:40").Hidden = 0: Exit Sub
    If [f40] <> "" Then Exit Sub
    Range(Rows(40), Rows([f40].End(xlUp).Row + 1)).EntireRow.Hidden = -1
End Sub
Изменено: KuklP - 22.12.2013 22:34:50 (Файл)
Я сам - дурнее всякого примера! ...
 
Спасибо Юрий М пока разбираюсь с вашим кодом методом тыка.
KuklP тоже спасибо за проявленный интерес к моей теме. У вас что-то не совсем то. Попробуйте заполнить 38 и 39 - их скрывает.
 
Вот.
 
У меня не скрывает. Вы столбец к-во заполняли?
Я сам - дурнее всякого примера! ...
 
Благодарствую Юрий М,  пока тестирую, но вроде то что надо, работает.
KuklP тоже огромная благодарочка, работает, сразу в вашем коде не усмотрел работу макроса по наличию данных в столбце F, извиняюсь что ввел в заблуждение.
Вот только не могу теперь понять какой из этих кодов использовать, ведь это всего лишь часть кода, который будет использован в макросе печати. Посоветуйте как профи какой лучше или быстрее.
 
На таком количестве данных разницы в скорости не заметите. Используйте тот, который Вам более понятен.
 
На таком количестве строк разности в скорости Вы точно не ощутите. Так что выбирайте какой Вам больше нравится. Можете монетку бросить. :D
Я сам - дурнее всякого примера! ...
 
Бросил монетку, она зависла в воздухе, в итоге решил использовать оба.  ;)  
Спасибо.
Страницы: 1
Наверх