Подскажите, пожалуйста, как сделать так, чтобы максрос сначала проверял - есть ли заданный лист (Лист "Дневной_отчёт") в книге, а если есть, удалял его?
Всем доброго дня!
Подскажите, пожалуйста, как сделать так, чтобы максрос сначала проверял - есть ли заданный лист (Лист "Дневной_отчёт") в книге, а если есть, удалял его?maverick_77
Sub УдалЛист() Dim sht As Worksheet For Each sht In ActiveWorkbook.Worksheets If sht.Name = "Дневной_отчёт" Then Application.DisplayAlerts = False sht.Delete Application.DisplayAlerts = True End If Next sht End Sub
[/vba] Название листа: "Дневной_отчёт" должно полностью совпадать, если у Вас другое наименование, то поправьте в строчке: [vba]
Код
If sht.Name = "Дневной_отчёт" Then
[/vba]
maverick_77, [vba]
Код
Sub УдалЛист() Dim sht As Worksheet For Each sht In ActiveWorkbook.Worksheets If sht.Name = "Дневной_отчёт" Then Application.DisplayAlerts = False sht.Delete Application.DisplayAlerts = True End If Next sht End Sub
[/vba] Название листа: "Дневной_отчёт" должно полностью совпадать, если у Вас другое наименование, то поправьте в строчке: [vba]
Sub Макрос1() Dim sh As Worksheet On Error Resume Next Set sh = Sheets("Дневной_отчёт") If Not sh Is Nothing Then Application.DisplayAlerts = 0 sh.Delete Application.DisplayAlerts = 1 End If End Sub
[/vba]
Еще вариант, без перебора листов:[vba]
Код
Sub Макрос1() Dim sh As Worksheet On Error Resume Next Set sh = Sheets("Дневной_отчёт") If Not sh Is Nothing Then Application.DisplayAlerts = 0 sh.Delete Application.DisplayAlerts = 1 End If End Sub
Sub Макрос1() Dim sh As Worksheet On Error Resume Next Application.DisplayAlerts = 0 Worksheets("Дневной_отчёт").Delete Application.DisplayAlerts = 1 End If End Sub
[/vba]
Подскажите, пожалуйста, зачем эта проверка?
Manyasha, а зачем тут: [vba]
Код
If Not sh Is Nothing Then
[/vba] ? Тут вообще можно поставить сразу: [vba]
Код
Worksheets("Дневной_отчет").delete
[/vba] , нет? получая:
[vba]
Код
Sub Макрос1() Dim sh As Worksheet On Error Resume Next Application.DisplayAlerts = 0 Worksheets("Дневной_отчёт").Delete Application.DisplayAlerts = 1 End If End Sub
[/vba]
Подскажите, пожалуйста, зачем эта проверка?Roman777
Roman777, Manyasha, спасибо большое! Работает =) ' Какое же удовольствие доставляет ламеру типа меня видеть, как что-то "заработало!" =))))))) Сижу тычу в кнопку - смотрю, как листики удаляются =))) Какие-то детские ощущения =)
А можно ли аналогично поступать с целыми файлами: чтобы макрос проверял - открыт ли файл (с известным именем); если не открыт, то открывал его (опять же из заранее известной папки)? Или этот вопрос надо задать в отдельно заведённом топике? [moder]Это другой вопрос, значит - новая тема[/moder]
Roman777, Manyasha, спасибо большое! Работает =) ' Какое же удовольствие доставляет ламеру типа меня видеть, как что-то "заработало!" =))))))) Сижу тычу в кнопку - смотрю, как листики удаляются =))) Какие-то детские ощущения =)
А можно ли аналогично поступать с целыми файлами: чтобы макрос проверял - открыт ли файл (с известным именем); если не открыт, то открывал его (опять же из заранее известной папки)? Или этот вопрос надо задать в отдельно заведённом топике? [moder]Это другой вопрос, значит - новая тема[/moder]maverick_77
если нельзя, но очень хочется, то можно!
Сообщение отредактировал Pelena - Среда, 29.07.2015, 10:28