Страницы: 1
RSS
Скрытие строк по условию
 
Уважаемые форумчане, прошу помочь с кодом начинающему!

В таблице Excel, начиная с с 20-й по 56-ю строку в столбце "Е" вводятся значения: всего может быть введено в любую из указанных ячеек столбца от ни одного до 37 значений; там, где значения не введены, появляется "-".

Вопрос: как в коде прописать, чтобы проверялся вышеуказанный диапазон "Е20:Е56", и при наличии в ячейке "-" соответствующая СТРОКА скрывалась???
С дальнейшей подготовкой к печати вообще караул: абсолютно не представляю, как из 3-х страниц изначального файла, при скрытии (например) всех 37 строк, подготовить нормально документ из 1-й страницы к выводу в дальнейшем на печать???

Благодарю заранее всех, кто откликнется и поможет! Прилагаю файл.
 
Дополнение к вопросу (или усложнение): возможно ли в коде выполнить поиск "-" в перечисляемых ячейках и диапазонах (например ЕСЛИ - "D10", "D11", "D15", "E20:E56", "D7" равно "-", то строки, где эти значения, - скрываются!)? Ну и далее вопрос о подготовке к печати на А4 (альбом) - в силе!)
Изменено: gena10111 - 13.09.2018 12:03:51
 
Скрыть можно с помощью маленького макроса (см.пример). А вот с печатью как-то непонятно: что значит "подготовить нормально"? Ну скрыли строки, ну и что? Почему нельзя в таком виде распечатать? И во втором сообщении тоже непонятно. Нужно скрыть с 7 по 56 строку?
 
Спасибо _Igor_61 огромное!
Во втором сообщении указано условие, чтобы выборочные ячейки и диапазоны проверялись с помощью макроса. Но теперь я понимаю - как это сделать. По вопросу печати скажу, что изначальный файл имеет 2 страницы (но может иметь и 222 страницы). Когда в выбранных диапазонах какие-либо строки скрываются, то к печати лист формируется произвольно, по размеру листа. То есть, хотелось бы к печати подготовить автоматически документ (если это возможно), чтобы например если на листе читаемо размещаются 45 строк, то разбивка на страницы так и шла, по 45 строк. Может как-то коряво вопрос изложил, извините!)
 
У меня все-таки вопрос, как проверять не весь столбец, начиная с 20-й строки, а именно диапазон с 20-й по 56-ю строку в столбце №5?
 
Спасибо всем, кто помогает мне! Сообщаю, что принял к сведению код, написанный _Igor_61. Однако, в интернете нашел и подработал под себя код, который удовлетворяет моим потребностям. Вопрос остается в подготовке к печати при различных вариантах изменений (частный случай, когда все, с 20-й по 56 строку скрываются, то необходимо скрыть и "шапку", строка 19, и строку 57 "*  - все указано..."). Возможно ли это вообще автоматизировать с помощью VBA?
Файл прилагаю. Ниже представлен код:
Код
Option Explicit
Dim ShOprr As Worksheet ' Лист "Вол_Мола"


Sub SkrytieStrok_PRR()
    Dim intRow As Integer
    Dim intLastRow As Integer
    
    Set ShOprr = ActiveWorkbook.ActiveSheet
  ' Получение номера последней используемой строки
   intLastRow = ActiveSheet.Range("E20:E56").Row + ActiveSheet.Range("E20:E56").Rows.Count - 1

Application.ScreenUpdating = False
   
   ' Скрытие строк со значением "-" в диапазоне "E20:E56"
   For intRow = intLastRow To 1 Step -1
      If ActiveSheet.Rows.Cells(intRow, 5).Text = "-" Then
         ActiveSheet.Rows.Cells(intRow, 5).EntireRow.Hidden = True
      End If
   Next intRow
   
   ' Скрытие строк "9-13" или "14-18" при наличии значения "-" в ячейках "D10" или "D15"
        If ShOprr.Range("D10") = "-" Then
        ShOprr.Rows("9:13").Select
        Selection.EntireRow.Hidden = True
        End If
            If ShOprr.Range("D15") = "-" Then
            ShOprr.Rows("14:18").Select
            Selection.EntireRow.Hidden = True
            End If
            
Application.ScreenUpdating = True
End Sub
Изменено: gena10111 - 17.09.2018 09:51:38 (Устранена ошибка в коде)
 
Цитата
gena10111 написал:
Возможно ли это вообще автоматизировать с помощью VBA
Подозреваю, что можно :)  Не вникал в код из #6, но на первый взгляд - Вы просто выложили скачанный гд-то код, не попытавшись разобраться в нем. Возможно, и ошибаюсь, не вникал подробно в тему и в Ваши сообщения в личке, попробуйте разобраться со строками и со столбцами:
Range("E20:E56") - 20 и 56 строки
Rows("14:18") - 14 и 18 строки
Rows(5) - пятая строка
Cells(5, 5) - ячейка в пятой строке в пятом столбце
Тогда и страницы сможете разбить по области печати, макрорекордкер Вам в помощь!
Если нет времени с этим разбираться - тогда в платный раздел.
P.S. забыл сказать - Count - подсчет строк и столбцов (как скрытых так и видимых - в общем, считает все) - тоже Вам поможет

не понял ответа на мой вопрос о скрытых строках и области печати...    вопрос в #3, были пояснения в ЛС, но все равно не понял, может, чего-то не догоняю...
тогда - как в примере - скрыли все, кроме двух строк,и выводим на печать кучу пустых листов с подписями в конце?
Вариант - проверять на скрытые и видимые, и так задавать область печати по 45 видимых строк. Что именно не получается? Подсчитать скрытые? Разбить по 45? В примере покажите, что и как делали, а то так непонятно, код из #6 не совсем по задаче, хотя, может и я чего-то не понял...
Изменено: _Igor_61 - 14.09.2018 21:31:25
 
Код
del
Изменено: _Igor_61 - 14.09.2018 21:32:14
 
Цитата
_Igor_61 написал:
Range("E20:E56") - 20 и 56 строки
Rows("14:18") - 14 и 18 строки
Не совсем так )
 
Ну да, не совсем :)
Хотел показать ТС-у где в коде можно строки найти и столбцы заодно (если захочет), т.к. он от первого сообщения и до #6 в понимании этого ничуть не продвинулся...
Может, я непонятно объяснял, каюсь  и исправляюсь :)
Range("E20:E56") - диапазон ячеек с "Е20" по "Е56"
Rows("14:18") - строки с 14 по 18
 
Благодарю за помощь! _Igor_61, Ваши советы принял к сведению, буду стараться разобраться во всем. Насчет кода: и Ваш, и тот, что попался в интернете (см #6) и подкорректирован мною под мою задачу - оба корректно работают. С печатью попробую поэспериментировать. Еще раз - всем спасибо!!!
Страницы: 1
Наверх