Удалить лист Excel vba
Обновлено: 20.11.2024
Метод удаления листа в VBA используется для удаления листа из книги Excel. Когда мы удаляем рабочий лист, метод Удалить рабочий лист отображает диалоговое окно, которое по умолчанию напоминает пользователю подтвердить удаление. Если мы нажмем кнопку «Удалить» в диалоговом окне, он удалит рабочий лист из рабочей книги. Имеет логическое значение. Это означает, что появится диалоговое окно с двумя вариантами. Это либо Cancel(False), либо Delete(True).
В этой теме:
Почему мы используем метод Удалить лист в VBA?
Иногда нам могут не понадобиться некоторые рабочие листы в рабочей книге. Мы можем подумать об удалении этих рабочих листов. В течение этого времени мы можем использовать метод Удалить рабочий лист для удаления рабочих листов.
Метод удаления листа VBA — синтаксис
Вот пример синтаксиса для удаления рабочего листа с помощью VBA.
Где «Рабочий лист» представляет объект, а «Удалить» — метод объекта рабочего листа.
Метод удаления рабочего листа VBA: пример 1
Пожалуйста, см. приведенный ниже код VBA для удаления листа из книги с предупреждающим сообщением. Когда мы удаляем рабочий лист, он отображает диалоговое сообщение Excel и запрашивает у пользователя подтверждающее сообщение. После того, как вы нажмете кнопку «Удалить», удаленный лист больше не будет доступен в книге. Если вы нажмете кнопку «Отмена», рабочий лист в книге не будет удален.
В приведенном выше примере мы удалили лист с именем «Лист2» из рабочей книги, используя метод Delete объекта рабочего листа.
Метод удаления листа VBA: пример 2
Пожалуйста, см. приведенный ниже код VBA, чтобы удалить активный лист из книги.
В приведенном выше примере мы удалили активный лист из рабочей книги, используя метод Delete объекта рабочего листа.
Метод удаления рабочего листа VBA: пример 3
Пожалуйста, см. приведенный ниже код VBA, чтобы удалить рабочий лист из книги без предупреждения.
В приведенном выше примере мы удалили рабочий лист из рабочей книги, используя метод Delete объекта рабочего листа. И он покажет вам, как перестать показывать предупреждающее сообщение при удалении листа.
Метод удаления рабочего листа VBA — инструкции
Пожалуйста, следуйте приведенным ниже пошаговым инструкциям, чтобы выполнить вышеупомянутые макросы или коды VBA:
У меня есть макрос, который создает несколько книг. Я хотел бы, чтобы макросы в начале запуска проверяли, содержит ли файл 2 электронные таблицы, и удаляли их, если они существуют.
Я попробовал следующий код:
Этот код возвращает ошибку:
Вероятно, у меня неправильное форматирование, но если есть более простой способ сделать это, это было бы очень полезно.
5 ответов 5
Поскольку мы удаляем, мы запускаем цикл назад.
Вы можете использовать команду "Возобновить при ошибке", тогда нет необходимости перебирать все листы в книге.
При возобновлении при ошибке дальше ошибки не распространяются, а вместо этого подавляются. Так что здесь, когда листы не существуют или когда по какой-либо причине не могут быть удалены, ничего не происходит. Это похоже на то, когда вы говорите: удалите эти листы, и если это не удастся, мне все равно. Предполагается, что Excel найдет лист, вы не будете выполнять поиск.
Примечание. Если книга будет содержать только эти два листа, будет удален только первый лист.
@DrCord, что ты хочешь объяснить? Это не требует пояснений. Честно говоря, я не знаю, хорошее ли это решение, это просто еще один способ сделать это. Основываясь на небольшом количестве голосов, я думаю, что это, вероятно, не очень хорошее решение. Тем не менее, в этом случае было бы проще позволить Excel выполнить поиск и просто игнорировать исключения, которые могут быть вызваны, когда лист не может быть удален. Но нужно быть осторожным с резюме-следующим, хорошо?
как насчет того, почему использование функции "Возобновить при ошибке" предотвращает необходимость перебирать все листы в ББ? Для меня не очевидно, почему это работает как довольно новый программатор макросов Excel.
@DrCord При возобновлении следующей ошибки ошибки не распространяются, а вместо этого подавляются. Так что здесь, когда лист не существует или когда по каким-либо причинам не может быть удален, ничего не происходит. Это похоже на то, когда вы говорите: удалите эти листы, и если это не удастся, мне все равно. Execl должен найти лист, вам не нужно ничего искать.
Отлично, я так и думал, спасибо за объяснение.Это помогает мне быть уверенным и помогает другим будущим пользователям SO решить, поможет ли этот код решить их проблему. :D тывм!
В этом учебном пособии вы узнаете, как удалить или очистить рабочий лист с помощью VBA.
Удалить лист
Используйте команду удаления, чтобы удалить рабочий лист.
Удалить рабочий лист по имени
Удалить лист по номеру индекса
Этот код удаляет первый рабочий лист в книге:
Этот код удаляет последний рабочий лист в книге:
Удалить лист без запроса
При попытке удалить рабочий лист Excel попросит вас подтвердить действие:
Вы можете отключить эти подсказки (оповещения), переключив DisplayAlerts:
Удалить лист, если он существует
Если вы попытаетесь удалить несуществующий рабочий лист, VBA выдаст ошибку. С помощью On Error Resume Next вы можете указать VBA удалить лист, если он существует, в противном случае перейти к следующей строке кода:
Вы также можете использовать нашу функцию RangeExists, чтобы проверить, существует ли лист, и если да, то удалить его.:
Очистить лист
Этот код очистит весь лист содержимого, форматов и всего остального:
Очистить содержимое листа
Этот код очистит содержимое всего листа. Он оставит форматирование, комментарии и все остальное в покое:
Программирование VBA стало проще
Прекратите искать код VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Очистить используемый диапазон
Приведенные выше примеры очищают ВСЕ ячейки на листе. Для больших листов это может занять очень много времени. Если вместо этого вы используете UsedRange, VBA очистит только «используемые» ячейки, которые содержат значения, форматы и т. д.
Генератор кода VBA
Надстройка примеров кода VBA
Легкий доступ ко всем примерам кода на нашем сайте.
Просто перейдите в меню, нажмите, и код будет вставлен прямо в ваш модуль. Надстройка .xlam.
Дж.А. Гомес
В этом учебном пособии по VBA вы узнаете, как удалять листы в Excel (различными способами) с помощью макросов.
Это руководство по VBA сопровождается рабочими книгами Excel, содержащими данные и макросы, которые я использую в приведенных ниже примерах. Вы можете получить немедленный бесплатный доступ к этим примерам книг, подписавшись на информационный бюллетень Power Spreadsheets.
Используйте следующее оглавление, чтобы перейти к интересующему вас разделу.
Оглавление
Похожие руководства по VBA и макросам
Следующие учебные пособия по VBA и макросам могут помочь вам лучше понять и реализовать приведенное ниже содержание:
-
Общие конструкции и структуры VBA:
-
Узнайте о часто используемых терминах VBA здесь.
- Узнайте здесь о других операциях, которые можно выполнять при работе с таблицами Excel.
Дополнительные учебные пособия по VBA и макросам можно найти в архивах.
Код VBA для удаления листа по положению
Процесс, сопровождаемый кодом VBA для удаления листа по положению
Объяснение оператора VBA
-
Конструкция VBA: свойство Workbook.Sheets.
При удалении рабочего листа вы можете работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы работаете.
-
Конструкция VBA: индексный параметр/номер листа, который вы хотите удалить.
Параметр/номер индекса представляет положение листа, рабочего листа или листа диаграммы на панели вкладок рабочей книги, с которой вы имеете дело, слева направо. Например, 1 — это первый (самый левый) лист/рабочий лист/лист диаграммы.
При указании параметра/номера индекса учитывайте следующее:
-
Подсчет обычно включает также скрытые листы/рабочие листы/листы диаграмм.
Если вы явно объявляете переменную для представления SheetIndex, используйте тип данных Long.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
Пример макроса для удаления листа по положению
Следующий макрос удаляет первый лист (Sheets(mySheetIndex)) в книге, в которой хранится макрос (ThisWorkbook). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).
Эффекты выполнения примера макроса для удаления листа по положению
Следующий GIF иллюстрирует результаты выполнения примера макроса. Первый лист книги (Лист1) удален.
Код VBA для удаления активного листа
Процесс удаления активного листа с помощью кода VBA
Объяснение оператора VBA
-
Конструкция VBA: свойство Application.ActiveSheet.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
Пример макроса для удаления активного листа
Следующий макрос удаляет активный лист (ActiveSheet). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).
Эффекты выполнения примера макроса для удаления активного листа
Следующий GIF иллюстрирует результаты выполнения примера макроса. Активный лист (Лист2) удален.
Код VBA для удаления листа по имени
Процесс удаления листа по имени с помощью кода VBA
Объяснение оператора VBA
-
Конструкция VBA: свойство Workbook.Sheets.
При удалении рабочего листа вы можете работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы работаете.
-
Конструкция VBA: имя листа, который вы хотите удалить.
Для этих целей имя листа отображается на вкладке рабочего листа или листа диаграммы. Если вы явно объявляете переменную для представления имени листа, используйте тип данных String.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
Пример макроса для удаления листа по имени
Следующий макрос удаляет лист с именем «удалить лист» (Sheets(mySheetName)) в рабочей книге, в которой хранится макрос (ThisWorkbook). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).
Эффекты выполнения примера макроса для удаления листа по имени
Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист» удален.
Код VBA для удаления листа без запроса или предупреждения
Процесс, сопровождаемый кодом VBA для удаления листа без запроса или предупреждения
Объяснение оператора VBA
- Элемент: Application.DisplayAlerts.
-
Конструкция VBA: свойство Application.DisplayAlerts.
Значение свойства Application.DisplayAlerts по умолчанию — True. В таких случаях Excel отображает диалоговое окно, предлагающее пользователю подтвердить удаление листа.
-
Конструкция VBA: новое значение свойства Application.DisplayAlerts.
Если для параметра Application.DisplayAlerts задано значение False, а Excel требует ответа, Excel выбирает ответ по умолчанию. Когда вы удаляете лист, ответом по умолчанию на диалоговое окно, предлагающее пользователю подтвердить удаление листа, является «Удалить». В результате Excel удалит лист.
-
Конструкция VBA: новое значение свойства Application.DisplayAlerts.
-
Конструкция VBA: свойство Workbook.Sheets.
При удалении рабочего листа вы можете работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы работаете.
-
Конструкция VBA: имя листа, который вы хотите удалить.
Для этих целей имя листа отображается на вкладке рабочего листа или листа диаграммы. Если вы явно объявляете переменную для представления имени листа, используйте тип данных String.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
Пример макроса для удаления листа без запроса или предупреждения
Следующий макрос удаляет лист с именем «удалить лист без запроса» (Sheets(mySheetName)) в рабочей книге, где хранится макрос (ThisWorkbook), без отображения запроса, который просит пользователя подтвердить удаление листа (Application.DisplayAlerts = Ложь).
Эффекты выполнения примера макроса для удаления листа без запроса или предупреждения
Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист без запроса» удаляется без запроса или предупреждения.
Код VBA для удаления листа, если он существует
Процесс, сопровождаемый кодом VBA, для удаления листа, если он существует
Объяснение оператора VBA
-
Конструкция VBA: при ошибке возобновить следующий оператор.
«Sheets(SheetName).Delete» обычно возвращает ошибку времени выполнения 9 (нижний индекс вне допустимого диапазона), когда лист, указанный Sheets(SheetName), не существует. Без инструкции On Error Resume Next такая ошибка приводит к тому, что Excel отображает сообщение об ошибке и останавливает выполнение макроса.
-
Если лист с именем SheetName существует, Excel удалит лист, как указано в «Sheets(SheetName).Delete».
-
Конструкция VBA: свойство Workbook.Sheets.
При удалении рабочего листа вы можете работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы работаете.
-
Конструкция VBA: имя листа, который вы хотите удалить.
Для этих целей имя листа отображается на вкладке рабочего листа или листа диаграммы. Если вы явно объявляете переменную для представления имени листа, используйте тип данных String.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
-
Конструкция VBA: оператор GoTo 0 при ошибке.
Пример макроса для удаления листа, если он существует
Следующий макрос удаляет лист с именем «удалить лист, если он существует» (Sheets(mySheetName)) в рабочей книге, где хранится макрос (ThisWorkbook), если такой лист существует. Если лист не существует, макрос обрабатывает ошибку. Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).
Эффекты выполнения примера макроса для удаления листа, если он существует
Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист, если он существует» удален.
Код VBA для удаления нескольких листов
Процесс удаления нескольких листов с помощью кода VBA
Объяснение оператора VBA
-
Конструкция VBA: свойство Workbook.Sheets.
При удалении листов вы можете работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы работаете.
-
Конструкция VBA: функция массива.
-
Конструкция VBA: список аргументов функции массива.
Как правило, определенные объекты из коллекции Sheets, с которыми вы работаете, можно идентифицировать по порядковому номеру или имени листа следующим образом:
-
Номер индекса представляет положение листа, рабочего листа или листа диаграммы на панели вкладок рабочей книги, с которой вы имеете дело, слева направо. Например, 1 — это первый (самый левый) лист/рабочий лист/лист диаграммы.
При указании параметра/номера индекса учитывайте следующее:
-
Подсчет обычно включает также скрытые листы/рабочие листы/листы диаграмм.
-
Конструкция VBA: метод Worksheet.Delete или метод Chart.Delete.
Пример макроса для удаления нескольких листов
Следующий макрос удаляет (i) первые 2 листа и (ii) листы с именами «удалить несколько листов 1» и «удалить несколько листов 2» (Sheets(mySheetNames)) в книге, где хранится макрос. (Эта рабочая тетрадь). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).
Эффекты выполнения примера макроса для удаления нескольких листов
Следующий GIF иллюстрирует результаты выполнения примера макроса. (i) первые 2 листа (Лист6 и Лист7) и (ii) листы с именами «удалить несколько листов 1» и «удалить несколько листов 2» удаляются.
Ссылки на конструкции VBA, используемые в этом руководстве по VBA
Используйте следующие ссылки, чтобы посетить соответствующую веб-страницу в Microsoft Developer Network:
-
Определите рабочую книгу, содержащую листы, рабочие листы или листы диаграмм, которые необходимо удалить:
Читайте также: