Страницы: 1
RSS
Применение макроса ко всем листам в книге
 
Здравствуйте, мне довольно часто приходится работать с Книгами, содержащими по 100+ листов. На каждом листе скрыты разные столбцы и/или строки и перед финальной отправкой мне нужно отобразить абсолютно все данные, все столбцы и строки. Начинал я вручную: выделить все, правая клавиша, Отобразить. Далее я нашел вот такой простенький макрос, который экономит немного времени:
Код
sub show_all()   
with activesheet.cells   
.entirerow.hidden=false   
.entirecolumn.hidden=false   
end with   
end sub

Однако он работает только на активный лист. Я попробовал поискать методы применения макроса сразу ко всем листам и нашел вот такую конструкцию:
Код
Sub Dosomething()    Dim xSh As Worksheet
   Application.ScreenUpdating = False
   For Each xSh In Worksheets
       xSh.Select
       Call RunCode
   Next
   Application.ScreenUpdating = True
End Sub
Sub RunCode()
   'your code here
End Sub

Преобразовал ее в следующее:
Код
Sub Dosomething()    Dim xSh As Worksheet
   Application.ScreenUpdating = False
   For Each xSh In Worksheets
       xSh.Select
       Call RunCode
   Next
   Application.ScreenUpdating = True
End Sub
Sub RunCode()
   sub show_all()   
with activesheet.cells   
.entirerow.hidden=false   
.entirecolumn.hidden=false   
end with   
End Sub

Но она так и не заработала, вызывает ошибку с строке Sub RunCode(). Сможете подсобить с поиском решения, пожалуйста? Может быть есть более простой вариант?
 
Код
Sub Dosomething()
Dim xSh As Worksheet
   Application.ScreenUpdating = False
    
    For Each xSh In Worksheets
       Call RunCode(xSh)
    Next xSh
    
   Application.ScreenUpdating = True
End Sub

Sub RunCode(xSh As Worksheet)
    With xSh
        .Rows.Hidden = False
        .Columns.Hidden = False
    End With
End Sub

Цитата
вызывает ошибку с строке Sub RunCode()
Ничего не смущает?
Код
Sub RunCode()
   sub show_all() 
 
Цитата
vikttur написал: Ничего не смущает?
Нет, по той простой причине, что очень мало понимаю в составлении макросов для Excel, поэтому обычно ищу варианты на форумах; как правило что-то похожее уже требовалось другим пользователям, поэтому можно подсмотреть.

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