Возвращает номер Index
листа и затем удаляет все листы с индексом выше этого.
Необходимо проверить, что «шаблон 1» - не единственный лист в книге или что он не последний лист в книге.Вам также необходимо удалить с последнего листа назад на первый - что, как я вижу, вы сделали в исходном коде.
Sub Test()
Dim Indx As Long
Dim x As Long
With ThisWorkbook
On Error Resume Next
Indx = .Sheets("template 1").Index
On Error GoTo 0
If Indx <> 0 Then
If .Sheets.Count > 1 And Indx < .Sheets.Count Then
Application.DisplayAlerts = False
For x = .Sheets.Count To Indx + 1 Step -1
.Sheets(x).Delete
Next x
Application.DisplayAlerts = True
End If
End If
End With
End Sub
Редактировать: Только что понял - нужно также проверить, виден ли хотя бы один лист, но угадать, что "шаблон 1" будет виден, так что немного обманывая и не проверяядля этого.:)
Редактировать 2: Я добавил проверку, чтобы убедиться, что шаблон 1 существует.Обычно я передаю это отдельной функции, которая возвращает TRUE / FALSE.
Редактировать 3: Извините!Изменено Worksheets
на Sheets
, поэтому оно включает листы диаграммы.