Здравствуйте, прошу гениев подсказать, у меня есть макрос для удаления новых созданных листов, но они отсылаются на имя листа, но бывает, что я некоторые листы переименовываю и потому нужно сделать отсылку не на само имя листа, а на его модуль (лист1, лист2, лист3 и т.д.). Как это прописать?
[vba]
Код
Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Name <> "поставки" And sh.Name <> "аудит" And sh.Name <> "комплектация" And sh.Name <> "отчеты" Then sh.Delete Next Application.DisplayAlerts = True
[/vba]
Здравствуйте, прошу гениев подсказать, у меня есть макрос для удаления новых созданных листов, но они отсылаются на имя листа, но бывает, что я некоторые листы переименовываю и потому нужно сделать отсылку не на само имя листа, а на его модуль (лист1, лист2, лист3 и т.д.). Как это прописать?
[vba]
Код
Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Name <> "поставки" And sh.Name <> "аудит" And sh.Name <> "комплектация" And sh.Name <> "отчеты" Then sh.Delete Next Application.DisplayAlerts = True
Sub удалить() 'удалить все листы кроме первых четырех Dim i& Application.DisplayAlerts = False For i = ThisWorkbook.Sheets.Count To 5 Step -1 MsgBox Sheets(i).Name Sheets(i).Delete Next Application.DisplayAlerts = True End Sub
[/vba]
aghient, привет так пойдет?: [vba]
Код
Sub удалить() 'удалить все листы кроме первых четырех Dim i& Application.DisplayAlerts = False For i = ThisWorkbook.Sheets.Count To 5 Step -1 MsgBox Sheets(i).Name Sheets(i).Delete Next Application.DisplayAlerts = True End Sub
nilem, спасибо, но не совсем то, что нужно. Мне нужно выборочные модули выделять, потому что лист2 и лист5 у меня отсутствуют, но на их место создаются новые листы. Ваш вариант неправильно срабатывает даже на созданном примере, он удаляет лист "аудит" и не удаляет лист7 или новые созданные листы, а если сделать шаг, To 6 Step -1, то это всё равно не помогает.
nilem, спасибо, но не совсем то, что нужно. Мне нужно выборочные модули выделять, потому что лист2 и лист5 у меня отсутствуют, но на их место создаются новые листы. Ваш вариант неправильно срабатывает даже на созданном примере, он удаляет лист "аудит" и не удаляет лист7 или новые созданные листы, а если сделать шаг, To 6 Step -1, то это всё равно не помогает.aghient
Чтобы правильно удалялось, переместите нужные листы (4 шт.) влево (мышкой берем закладку листа и перетаскиваем ее влево), т.е. последовательность листов в книге будет 4 "нужных" листа и сколько-то "ненужных". И вот теперь запустите макрос.
Чтобы правильно удалялось, переместите нужные листы (4 шт.) влево (мышкой берем закладку листа и перетаскиваем ее влево), т.е. последовательность листов в книге будет 4 "нужных" листа и сколько-то "ненужных". И вот теперь запустите макрос.nilem
Sub удалить() Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If InStr("Лист1Лист2Лист3Лист4Лист5", sh.CodeName) = 0 Then sh.Delete Next Application.DisplayAlerts = True End Sub
[/vba]
[vba]
Код
Sub удалить() Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If InStr("Лист1Лист2Лист3Лист4Лист5", sh.CodeName) = 0 Then sh.Delete Next Application.DisplayAlerts = True End Sub