P.S. Ну да, пример нужен. Без проверки накосячил в коде.
Код
Option Explicit
Sub PrimerVseTakiNujen()
Dim shX As Worksheet
Application.DisplayAlerts = False
For Each shX In ThisWorkbook.Worksheets
If shX.Name <> ThisWorkbook.ActiveSheet.Name And shX.Name <> "Ëèñò 2" And shX.Name <> "Ëèñò 1" Then
shX.Delete
End If
Next shX
Application.DisplayAlerts = True
End Sub
вот пример. Также, если кто знает, такой вариант: активный лист оставляем, а все что правее до последнего листа в книге удоляем. т.е. всё, что между активным листом и последним нужно удалить. помогите, пожалуйста!
Советник I категории написал: такой вариант: активный лист оставляем, а все что правее до последнего листа в книге удоляем
Код
Public Sub DeleteRightSheets()
Dim aSheet As Object, Ids() As Long, i As Long
Set aSheet = ActiveWorkbook.ActiveSheet
If aSheet.Index < ActiveWorkbook.Sheets.Count Then
ReDim Ids(1 To ActiveWorkbook.Sheets.Count - aSheet.Index)
For i = aSheet.Index + 1 To ActiveWorkbook.Sheets.Count
Ids(i - aSheet.Index) = i
Next
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(Ids).Delete
Application.DisplayAlerts = True
End If
End Sub
Ну, да, приношу свои извинения воспринял до, как по. Будьте столь любезны, подправьте условие выполнения и верхнюю границу цикла записи индексов удаляемых листов в массив.
Изменено: Андрей VG - 20.01.2020 20:24:55(ошибки-с)
Хотя для простоты можно было приложить файл, где, например, зелёным помечен активный лист, красным для удаления и белым - которые нужно оставить. Мой вывод - начинающий программист, плохо знающий объектную модель Excel.
Андрей VG написал: зелёным помечен активный лист, красным для удаления и белым - которые нужно оставить.
я думаю что Вам бы это врядли помогло, если Вы букв не видите в тз.Где я ПРОДУБЛИРОВАЛ условие: " т.е. всё, что между активным листом и последним нужно удалить".
я рад за вас, что вы такой наблюдательный,- жижнь удалась у вас наверное,- я рад за таких как ты, Вы. Прям день у тебя у Вас задался сегодня, можно ложиться спать спокойно. от своего величия.
Щелкаем левой кнопкой мыши по ярлычку первого листа, который надо удалить. Затем, если надо выполнить какую-нибудь операцию (н-р, удалить) над группой подряд идущих (т.н. смежных) листов, то, удерживая нажатой клавишу Shift, щелкаем по ярлычку последнего листа из группы. Если надо добавить в группу (или исключить из выделенного) отдельные (несмежные) листы, то помечаем их, удерживая нажатой клавишу Ctrl. Далее, правой кнопкой мыши на ярлычке одного из выделенных листов вызываем контекстное меню, выбираем Удалить, подтверждаем удаление в диалоговом окне (если на выделенных листах есть данные), и -- вуаля! Если листов слишком много, можно воспользоваться кнопками прокрутки, расположенными слева от ярлычков. Удачи!
Public Sub DeleteRightSheets()
Dim aSheet As Object, Ids() As Long, i As Long
Set aSheet = ActiveWorkbook.ActiveSheet
If aSheet.Index < ActiveWorkbook.Sheets.Count - 1 Then
ReDim Ids(1 To ActiveWorkbook.Sheets.Count - aSheet.Index - 1)
For i = aSheet.Index + 1 To ActiveWorkbook.Sheets.Count - 1
Ids(i - aSheet.Index) = i
Next
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(Ids).Delete
Application.DisplayAlerts = True
End If
End Sub
Цитата
Советник I категории написал: всё, что между активным листом и последним нужно удалить".