Страницы: 1
RSS
Как скрыть пустые строки в всей книге
 
Доброго времени суток!
Я к сожалению небольшой специалист по макросам, поэтому хотелось помощи в решении следующей задачи:
-Есть макрос который скрывает строки на отдельно взятом листе, а хотелось бы применить данный макрос к всей книге.
Код
Sub Скрыть_строки()
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each cell In ActiveSheet.UsedRange.Columns(1).Cells
        If cell.Value = "" Then cell.EntireRow.Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub

К сожалению похожей темы на форуме не нашел, поэтому решил спросить.  
 
DemonAMT,
Код
Sub Скрыть_строки()
    Dim cell As Range
    Application.ScreenUpdating = False
 
    
For Each sh In Worksheets
k = sh.Index
  
    For Each cell In Worksheets(k).UsedRange.Columns(1).Cells
        If cell.Value = "" Then cell.EntireRow.Hidden = True
    Next cell

Next sh
    
    
    Application.ScreenUpdating = True
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Код
Sub Скрыть_строки()
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each ws In ActiveWorkbook.Sheets
          For Each cell In ws.UsedRange.Columns(1).Cells
                If cell.Value = "" Then cell.EntireRow.Hidden = True
          Next
    Next
    Application.ScreenUpdating = True
End Sub
Изменено: skais675 - 12.02.2020 11:06:21
 
Подскажите, а как можно сделать исключение на несколько листов в книге на которые не надо чтобы макрос срабатывал.
 
DemonAMT, ну добавить if по названию листа или по индексу( т.е. номер по порядку который он расположен у вас внизу)
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
DemonAMT , ну добавить if по названию листа или по индексу( т.е. номер по порядку который он расположен у вас внизу)
Извините за мою некомпетентность, но как и куда добавить. Если можно пример. Спс
 
DemonAMT, ну пример от вас какой конкретно лист или листы вы не хотите обрабатывать макросом?
Не бойтесь совершенства. Вам его не достичь.
 
Допустим "лист2" и "Лист4"оставить без обработки
Изменено: DemonAMT - 12.02.2020 11:42:10
 
DemonAMT,
по имени листа заменить строки
Код
k = sh.Index
   If k <> 2 And k <> 4 Then
на
Код
k = sh.Name
   If k <> "Лист2" And k <> "Лист4" Then


по индексу листа
Код
Sub Скрыть_строки()
    Dim cell As Range
    Application.ScreenUpdating = False
  
     
For Each sh In Worksheets
k = sh.Index
   If k <> 2 And k <> 4 Then
    For Each cell In Worksheets(k).UsedRange.Columns(1).Cells
        If cell.Value = "" Then cell.EntireRow.Hidden = True
    Next cell
    End If
Next sh
     
     
    Application.ScreenUpdating = True
End Sub

Изменено: Mershik - 12.02.2020 11:45:28
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
DemonAMT написал:
Допустим "лист2" оставить без обработки
Код
Sub СкрытьСтроки()
    Dim ws As Worksheet
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        If ws.Index <> 2 Then
            For Each cell In ws.UsedRange.Columns(1).Cells
                If cell.Value = "" Then cell.EntireRow.Hidden = True
            Next cell
        End If
    Next ws
    Application.ScreenUpdating = True
End Sub
 
Цитата
Mershik написал:
If k <> 2 Then
А если лист имеет название
тогда надо писать
If k "Дебет" Then?
Изменено: DemonAMT - 12.02.2020 11:52:04
 
Цитата
DemonAMT написал:
то надо писать
Код
Sub СкрытьСтроки()
    Dim ws As Worksheet
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Дебет" Then
            For Each cell In ws.UsedRange.Columns(1).Cells
                If cell.Value = "" Then cell.EntireRow.Hidden = True
            Next cell
        End If
    Next ws
    Application.ScreenUpdating = True
End Sub
 
Цитата
aequit написал:
If ws.Name <> "Дебет" Then
А если несколько листов например книга2 и "дебет"
Изменено: DemonAMT - 12.02.2020 11:54:38
 
Цитата
DemonAMT написал:
А если несколько листов например книга2 и "дебет"
Объедините это логическим условием И
Код
If ws.Name <> "Дебет" And ws.Name <> "книга2" Then

или
Код
If ws.Name <> "Дебет" And ws.Name <> "книга2" And ws.Name <> "книга3" And ws.Name <> "книга100500" Then
Изменено: aequit - 12.02.2020 12:00:15
 
Все разобрался. ВСЕМ БОЛЬШОЕ СПС ЗА ПОМОЩЬ,
Страницы: 1
Наверх