Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/удаление новых листов, кроме выбранных по имени модуля - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » удаление новых листов, кроме выбранных по имени модуля (Макросы/Sub)
удаление новых листов, кроме выбранных по имени модуля
aghient Дата: Понедельник, 15.05.2017, 08:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, прошу гениев подсказать, у меня есть макрос для удаления новых созданных листов, но они отсылаются на имя листа, но бывает, что я некоторые листы переименовываю и потому нужно сделать отсылку не на само имя листа, а на его модуль (лист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]
К сообщению приложен файл: 7924382.xls (42.5 Kb)
 
Ответить
СообщениеЗдравствуйте, прошу гениев подсказать, у меня есть макрос для удаления новых созданных листов, но они отсылаются на имя листа, но бывает, что я некоторые листы переименовываю и потому нужно сделать отсылку не на само имя листа, а на его модуль (лист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]

Автор - aghient
Дата добавления - 15.05.2017 в 08:37
nilem Дата: Понедельник, 15.05.2017, 09:28 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
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
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение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
[/vba]

Автор - nilem
Дата добавления - 15.05.2017 в 09:28
aghient Дата: Понедельник, 15.05.2017, 12:02 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, спасибо, но не совсем то, что нужно. Мне нужно выборочные модули выделять, потому что лист2 и лист5 у меня отсутствуют, но на их место создаются новые листы.
Ваш вариант неправильно срабатывает даже на созданном примере, он удаляет лист "аудит" и не удаляет лист7 или новые созданные листы, а если сделать шаг, To 6 Step -1, то это всё равно не помогает.
 
Ответить
Сообщениеnilem, спасибо, но не совсем то, что нужно. Мне нужно выборочные модули выделять, потому что лист2 и лист5 у меня отсутствуют, но на их место создаются новые листы.
Ваш вариант неправильно срабатывает даже на созданном примере, он удаляет лист "аудит" и не удаляет лист7 или новые созданные листы, а если сделать шаг, To 6 Step -1, то это всё равно не помогает.

Автор - aghient
Дата добавления - 15.05.2017 в 12:02
nilem Дата: Понедельник, 15.05.2017, 12:06 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Чтобы правильно удалялось, переместите нужные листы (4 шт.) влево (мышкой берем закладку листа и перетаскиваем ее влево), т.е. последовательность листов в книге будет 4 "нужных" листа и сколько-то "ненужных". И вот теперь запустите макрос.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеЧтобы правильно удалялось, переместите нужные листы (4 шт.) влево (мышкой берем закладку листа и перетаскиваем ее влево), т.е. последовательность листов в книге будет 4 "нужных" листа и сколько-то "ненужных". И вот теперь запустите макрос.

Автор - nilem
Дата добавления - 15.05.2017 в 12:06
RAN Дата: Понедельник, 15.05.2017, 12:17 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[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
[/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
[/vba]

Автор - RAN
Дата добавления - 15.05.2017 в 12:17
aghient Дата: Понедельник, 15.05.2017, 19:51 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, RAN, спасибо огромное за помощь, последний макрос идеально работает.
 
Ответить
Сообщениеnilem, RAN, спасибо огромное за помощь, последний макрос идеально работает.

Автор - aghient
Дата добавления - 15.05.2017 в 19:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » удаление новых листов, кроме выбранных по имени модуля (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!