Уважаемые форумчане, добрый день!
Мучаюсь второй день, не могу реализовать задачу.
Макрос на кнопке «Скрыть пустые» скрывает все строки, начиная с 30 строки и до конца таблицы по при условии пустых ячеек в определенных столбцах
Код |
---|
Sub СкрытьПустые() Dim i& Application.ScreenUpdating = False For i = 30 To Cells(Rows.Count, 1).End(xlUp).Row 'Определяем что скрытие пустых строк начнется с 30 строки 'Далее определяем какие диапазоны столбцов мы отслеживаем, если во всех указанных диапазонах пусто, то идет скрытие строки If WorksheetFunction.CountA(Range("D" & i & ":H" & i)) = 0 _ And WorksheetFunction.CountA(Range("J" & i & ":J" & i)) = 0 _ And WorksheetFunction.CountA(Range("L" & i & ":L" & i)) = 0 _ And WorksheetFunction.CountA(Range("N" & i & ":P" & i)) = 0 _ And WorksheetFunction.CountA(Range("R" & i & ":R" & i)) = 0 _ And WorksheetFunction.CountA(Range("T" & i & ":V" & i)) = 0 _ And WorksheetFunction.CountA(Range("X" & i & ":Y" & i)) = 0 _ And WorksheetFunction.CountA(Range("AA" & i & ":AA" & i)) = 0 Then Rows(i).EntireRow.Hidden = True End If Next Application.ScreenUpdating = True End Sub |
Кнопка «Отобразить все» возвращает все обратно.
Код |
---|
Sub ОтобразитьПустые() Rows("30:9999").Hidden = False 'Показать скрытые строки в диапазоне End Sub |
долго (несколько минут). Решил облегчить задачу и выполнять скрытие строк
только в указанном через форму диапазоне по выбору пользователя – кнопка «Скрыть
пустые строки диапазона»
Код |
---|
Sub СкрытьПустыеДиапазона2() Dim i1 As Long, i2 As Long Application.ScreenUpdating = False i1 = Selection.Cells(1).Row 'Определяем переменную i1 - первая строка выделенного диапазона i2 = Selection.Cells(Selection.Cells.Count).Row 'Определяем переменную i2 - последняя строка выделенного диапазона Rows(i1).Resize(i2 - i1 + 1).Hidden = True 'Скрываются строки в диапазоне. Почему так не понятно. Rows("i1:i2") не работает Application.ScreenUpdating = True End Sub |
Скрытие строк работает, но только внедрить условия (объединить эти два кода) не получается
Пробовал такКод |
---|
Sub СкрытьПустыеДиапазона2() Dim i1 As Long, i2 As Long Application.ScreenUpdating = False ' For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row 'Определяем что скрытие пустых строк начнется с 7 строки i1 = Selection.Cells(1).Row 'Определяем переменную i1 - первая строка выделенного диапазона i2 = Selection.Cells(Selection.Cells.Count).Row 'Определяем переменную i2 - последняя строка выделенного диапазона If WorksheetFunction.CountA(Range("D" & i & ":H" & i)) = 0 _ And WorksheetFunction.CountA(Range("J" & i & ":J" & i)) = 0 _ And WorksheetFunction.CountA(Range("L" & i & ":L" & i)) = 0 _ And WorksheetFunction.CountA(Range("N" & i & ":P" & i)) = 0 _ And WorksheetFunction.CountA(Range("R" & i & ":R" & i)) = 0 _ And WorksheetFunction.CountA(Range("T" & i & ":V" & i)) = 0 _ And WorksheetFunction.CountA(Range("X" & i & ":Y" & i)) = 0 _ And WorksheetFunction.CountA(Range("AA" & i & ":AA" & i)) = 0 Then Rows(i1).Resize(i2 - i1 + 1).Hidden = True 'Скрываются строки в диапазоне. End If ' Next Application.ScreenUpdating = True End Sub |
Прошу помочь с решением данной проблемы.
Если можно подскажите еще пожалуйста как можно заменить названия столбцов на "Поименованный диапазон" (столбцы часто меняются и приходится каждый раз править код)Заранее спасибо.