Я столкнулся с этой проблемой, используя Excel 2016, и на удивление DisplayAlerts оказался бесполезнымНе уверен, что кто-то еще испытал это.Я до сих пор не знаю, почему, но, читая этот поток , в соответствии с замечаниями метода Worksheet.Delete ( здесь ):
Когдапри удалении рабочего листа этот метод отображает диалоговое окно, в котором пользователю предлагается подтвердить удаление Это диалоговое окно отображается по умолчанию .При вызове объекта «Рабочий лист» метод Delete возвращает логическое значение, равное False, если пользователь нажал кнопку «Отмена» в диалоговом окне, или значение «Истина», если пользователь нажал кнопку «Удалить».
В Excel 2016, хотя приложениеDisplayAlerts был установлен в False, он продолжал показывать предупреждение после (или, скорее, до) удаления.
Я еще не нашел подходящее решение, поэтому я просто делаю листы, которые хочу удалить, "исчезают""с использованием цикла for each
:
Sht.UsedRange.clear
For each shp in sht.Shapes
shp.Delete
Next
For each nm in sht.Parent.Names
if nm.RefersToRange.Parent is sht then nm.Delete
Next
sht.visible = xlSheetVeryHidden
(код - это непроверенный черновик; возможные ошибки могут быть обработаны в основном on error resume next
)
Это далекоот идеала, но он делает то, что мне нужно сделать (за счет большего объема памяти, конечно).Может быть, я должен превратить этот ответ в вопрос и посмотреть, есть ли у кого-нибудь лучшая идея для Excel 2016.