Страницы: 1
RSS
VBA Создание отсутствующих и удаление существующих листов
 
Добрый день!
У меня есть два макроса:
1. Создает листы по списку из ячеек
Код
Sub CreateAllPages()
Dim i As Long
    
    For i = 3 To Range("C2").Value
    
    Sheets("Template").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = Worksheets("Macros").Cells(i, 6).Value

Next

    Sheets("Macros").Select
End Sub
2. Удаляет листы по этому же списку.
Код
Sub DeliteAllPages()
Dim i As Long
    
    For i = 3 To Range("C2").Value

    Sheets(Format(Cells(i, 6).Value)).Select
    ActiveWindow.SelectedSheets.Delete
Next
    Sheets("Macros").Select
End Sub

Как сделать так, чтобы первый создавал только те листы, которые есть в списке, но отсутствуют в книге?
А второй макрос не выдавал ошибку, если я пытаюсь удалить лист из списка, которого на самом деле нет?
 
1. Как узнать существует ли лист в книге?
2. Как запретить сообщения?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо! помогло, но когда использую удаление листов, удаляет первый и выдает ошибку. Где я не прав?
Код
Sub DeliteAllPages()

    Dim i As Long
    
    For i = 3 To Range("C2").Value
    If Sh_Exist(Format(Worksheets("Macros").Cells(i, 6).Value)) Then
    Sheets(Format(Cells(i, 6).Value)).Select
    ActiveWindow.SelectedSheets.Delete
        End If
        
Next

    Sheets("Macros").Select
End Sub
 
какой лист становится активным после первого прогона по циклу?
Обратите внимание, что проверяете на наличие листа с именем - используете полный путь:
Код
Worksheets("Macros").Cells(i, 6).Value

А при выделении листа для дальнейшего удаления - используете имя ячейки с активного листа:
Код
Cells(i, 6).Value

Очевидно, что на активном (после первого прогона) листе в ячейке в 6 столбце нет данных. :)
P.S. Кстати, а зачем вы выделяете лист при удалении? Почему не
Код
Worksheets("ИмяЛиста").Delete
?
Изменено: Пытливый - 15.07.2015 14:03:10
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый написал:
Очевидно, что на активном (после первого прогона) листе в ячейке в 6 столбце нет данных.
Точно! Мог бы сообразить! Спасибо огромное  
Страницы: 1
Читают тему
Наверх