Как удалить лист в excel на vba без подтверждения

Удалить лист, если он существует, и создать новый

Я хочу просмотреть листы Excel, найти лист с определенным именем и удалить этот лист, если он найден. После этого я хочу создать лист после всех существующих листов с таким именем. Мой код выглядит следующим образом:

Однако это не делает оба эти действия за один прогон кода. Если лист уже существует, он просто удалит лист и не создаст новый, как я хочу. Мне нужно запустить его снова, чтобы создать новый.

Как мне исправить мой код, чтобы удалить старый лист, если он существует, и создать новый?

Удалите оператор End , ваш код прекращает работу после поиска и удаления листа asdf .

Вместо прохождения Worksheets вы можете проверить наличие элемента в коллекции, попробовав и получив его:

Однако самый простой способ – попытаться удалить лист, когда он обернут в “блок” On Error Resume Next – On Error GoTo 0 :

Я не согласен с тем, что “самый простой” подход заключается в намеренном генерировании (и подавлении) ошибки. Лично я бы выбрал метод loop-to-locate, только пытаясь удалить его, если объект существует.

Если вы все равно собираетесь заново создавать рабочий лист, это подойдет практически во всех случаях:

  1. Безопасное удаление листа
  2. Удалить & Заменить лист
  3. О ThisWorkbook:

Безопасное удаление листа

Если однострочник (выше) не работает для вас (возможно, из-за некоторых упрямых цветов фона/изображений), то здесь подпункт, который вы можете вызвать, чтобы удалить любой указанный лист:

Назовите это просто как:

… где asdf – это имя листа (вкладки), который нужно удалить.

Удалить & Заменить лист

Кроме того, вызов подпункта ниже приведет к удалению и замене листа, присвоив ему то же имя и поместив его в ту же позицию вкладки, что и оригинал:

О ThisWorkbook :

Я использовал ThisWorkbook в обеих подпрограммах, что важно при работе с VBA, которая изменяет другие книги, или когда у вас открыто несколько книг одновременно.

Использование ThisWorkbook гарантирует, что ваш код всегда ссылается на книгу, в которой находится код, который его вызвал.

Без этого, например, если у вас открыты два одинаковых файла, и вы смотрите один, ожидая запуска VBA в другой книге, если в книге, которая “сверху”, есть лист с именем тот VBA, который пытается удалить, удалит лист в текущей (активной) книге вместо намеченной.

(… и вы не можете Ctrl + Z отменить VBA!)

Как удалить лист в excel на vba без подтверждения

Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Поиск по форуму
Расширенный поиск
К странице.

но Excel просит подтверждение на удаление листа, можно ли отключить это.

Ссылка на основную публикацию