MikeVol, спасибо за ответ, но это не решает мою проблему. Может я плохо описал задачу. В моем файле кнопка "Скрыть пустые"
Код |
---|
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
|
скрывает все строки, начиная с 30 при условии что данные в столбцах "D", "Е", "F", "G", H" ... и т.д. не пустые. Все работает правильно, но при большом объеме данных скрытие выполняется очень долго (500 строк - более 30 секунд). А данная операция выполняется часто.
Для ускорения решил скрывать и отображать строки только в указанном пользователем диапазоне строк. Для этого на кнопку "Скрыть пустые строки диапазона" вывел форму запроса "UserForm", которая предлагает пользователю выделить необходимый диапазон строк, где необходимо скрыть строки. При выделении строк и подтверждении выполняется
Код |
---|
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 'Скрываются строки в диапазоне.
Application.ScreenUpdating = True
End Sub
|
Все работает, но скрываются все строки выделенного диапазона, но мне нужно что-бы скрывались только строки из выделенного диапазона с условием, что данные в столбцах "D", "Е", "F", "G", H" ... и т.д. (как в первой коде) не пусты. То есть мне надо в 2-й код внедрить условия выполнения из 1-го кода