Страницы: 1
RSS
повторение действий для каждого листа (VBA)
 
Есть некий код, по работе с данными на листе. В книге есть несколько листов (кол-во и имена не известны). Необходимо этот код прогнать по каждому листу. Как это можно сделать?  
Подозреваю, что цикл должен быть "For Each … Next".  
 
Что-то типа:  
For Each Лист  
код  
Next Лист  
 
Заранее спасибо.
 
Кажись нашел:  
 
Dim sheet As Worksheet  
With ActiveWorkbook  
 For Each sheet In ActiveWorkbook.Worksheets  
    код  
 Next  
End With  
 
Пошёл проверять.
 
dim ws as worksheet  
 
for each ws in worksheets  
...  
next
 
не работает.  
 
Все действия происходят на первом листе.  
Dim sheet As Worksheet  
For Each sheet In ActiveWorkbook.Worksheets  
   Rows("7:7").Select  
   Selection.AutoFilter  
Next  
Листов 7. Цикл повторяется 7 раз: ставит-снимает фильтр....
 
может, стоит проверять, если фильтр. цикл корректно написан
 
sheet.Range("7:7").AutoFilter - в теле цикла. И все.
 
Ясен пень, не работает.  
Rows("7:7").Select - относится только к активному листу, так как опущено имя листа перед Rows (и в общем случае имя книги - будет относится к активной книге).  
В Вашем случае будет:  
sheet.Rows("7:7").Select
 
{quote}{login=Лузер™}{date=29.07.2008 02:01}{thema=}{post}  
В Вашем случае будет:  
sheet.Rows("7:7").Select{/post}{/quote}  
"метод Select из класса Range/Rows завершен неверно"  
Вариант от {login=Raptor} сработал. Но необходим именно    
"селект".  
М.б. есть способ сменить активный лист?
 
Dim sheet As Worksheet  
For Each sheet In ActiveWorkbook.Worksheets  
sheet.activate  
Rows("7:7").Select  
Selection.AutoFilter  
Next
 
{quote}{login=kaa}{date=29.07.2008 02:31}{thema=}{post}Dim sheet As Worksheet  
For Each sheet In ActiveWorkbook.Worksheets  
sheet.activate  
Rows("7:7").Select  
Selection.AutoFilter  
Next{/post}{/quote}  
 
ага. оно!  
Спасибо
 
Sub Макрос1()  
Dim Sheet As Worksheet  
   For Each Sheet In ActiveWorkbook.Worksheets  
       Sheet.Rows("7").AutoFilter  
   Next  
End Sub
Страницы: 1
Читают тему
Loading...