ТРЕНИНГИ
Быстрый старт
Расширенный Excel
Мастер Формул
Прогнозирование
Визуализация
Макросы на VBA
КНИГИ
Готовые решения
Мастер Формул
Скульптор данных
ВИДЕОУРОКИ
Бизнес-анализ
Выпадающие списки
Даты и время
Диаграммы
Диапазоны
Дубликаты
Защита данных
Интернет, email
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Содержание:
- Удаление листов с помощью параметров правой кнопки мыши
- Сочетания клавиш для удаления рабочих листов
- Гибридная комбинация клавиш для удаления листа
- Обычное сочетание клавиш для удаления листа
- Устаревшее сочетание клавиш для удаления листов
- Удаление ActiveSheet с помощью VBA
- Удаление листа без отображения запроса на подтверждение
- Удаление листа по имени (если он существует) с помощью VBA
- Удаление всех листов, кроме активного листа, с помощью VBA
- Удалить все листы с определенной текстовой строкой в имени
При работе с Excel вы проводите большую часть своего времени на листе (который представляет собой область, в которой находятся все ячейки и все, что там происходит).
Эффективная работа с Excel также означает, что вам придется работать с несколькими листами в одной книге.
Excel позволяет легко добавлять несколько листов в книгу, и в то же время вы также можете легко удалить эти листы.
В этом руководстве по Excel я покажу вам, как быстро удалить листы в Excel. Я бы рассмотрел несколько методов, таких как использование сочетаний клавиш, параметры на ленте и VBA для удаления листов в Excel.
Примечание. В этом руководстве я буду использовать слова «лист» и «лист» как синонимы. Но чтобы сказать вам разницу, листы будут включать в себя рабочие листы, а также листы диаграмм, но поскольку листы диаграмм не так широко используются, всякий раз, когда я использую слово лист, рассматривайте его как рабочий лист.
Удаление листов с помощью параметров правой кнопки мыши
Самый простой способ удалить рабочий лист в Excel — использовать эту простую технику двойного щелчка мыши.
Предположим, у вас есть рабочий лист с тремя листами, как показано ниже, и вы хотите удалить Sheet1.
Ниже приведены шаги для этого:
- Щелкните правой кнопкой мыши лист, который вы хотите удалить.
- Нажмите на опцию удаления
- В появившейся подсказке нажмите кнопку Удалить.
Вы также можете использовать описанную выше технику для листов, которые даже не являются активными. Например, если я сейчас нахожусь на Sheet1 и хочу удалить Shee3, я могу просто щелкнуть правой кнопкой мыши Sheet3 и удалить его.
Вы также можете использовать ту же технику для удалить сразу несколько листов.
Например, если я хочу удалить Sheet2 и Sheet3 за один раз, я могу удерживать контрольную клавишу и нажимать Sheet2 и Sheet3 один за другим (при этом все еще удерживая контрольную клавишу).
Удерживая контрольную клавишу, Excel позволит мне выбрать сразу несколько листов. Когда я закончу выбирать нужные листы, я могу оставить контрольную клавишу. теперь я могу щелкнуть правой кнопкой мыши любую из выбранных вкладок листов и нажать «Удалить».
Помните, что вы не можете удалить все листы в книге в Excel. в книге всегда должен быть хотя бы один лист. если вы попытаетесь удалить все рабочие листы (или единственный активный лист), вы увидите сообщение о том, что вам не разрешено это делать
Сочетания клавиш для удаления рабочих листов
Существует не одна комбинация клавиш, а две с половиной, которые можно использовать для удаления листов в Excel.
Я говорю «два с половиной», потому что в одном из сочетаний клавиш он использует мышь и клавиатуру (и это все еще более быстрый способ сделать это).
Гибридная комбинация клавиш для удаления листа
Щелкните правой кнопкой мыши + D
Чтобы удалить выбранный рабочий лист или рабочие листы, щелкните правой кнопкой мыши, а затем нажмите клавишу D на клавиатуре.
Лично я считаю, что это намного быстрее, чем просто удаление листа с помощью мыши (как я уже говорил в предыдущем разделе).
Обычное сочетание клавиш для удаления листа
ALT + H + D + S
Если вы предпочитаете отказаться от мыши и использовать только клавиатуру, указанное выше сочетание клавиш удалит активный лист или выбранные листы.
Вам нужно нажимать эти клавиши последовательно (т. Е. Одну за другой).
Хотя это может выглядеть как немного более длинное сочетание клавиш, как только вы привыкнете к нему, оно будет таким же быстрым, как и любой другой метод, описанный в этом руководстве.
Устаревшее сочетание клавиш для удаления листов
Как и у всех остальных, у Excel тоже есть прошлое, и оно не такое уж красивое. Я говорю об эпохе до-ленточного стиля.
По соображениям совместимости Excel по-прежнему позволяет некоторым из этих старых сочетаний клавиш работать в более новых версиях. и во многих случаях эти ранние ярлыки короче и лучше.
К счастью, есть устаревшее сочетание клавиш, которое работает для удаления листов в Excel.
ALT + E + L
Удаление ActiveSheet с помощью VBA
Когда дело доходит до удаления одного листа или нескольких рабочих листов, лучше использовать вышеупомянутые методы.
Хотя VBA может автоматизировать процесс, он полезен, когда вам приходится повторять задачу несколько раз.
Как вы увидите, с помощью VBA вы можете намного больше, когда дело доходит до удаления листов в Excel.
Итак, я расскажу вам о более сложных случаях использования, но перед этим давайте посмотрим, как просто удалить активный рабочий лист с помощью VBA.
Ниже приведен код VBA, который удалит активный лист:
Sub DeleteSheet () ActiveSheet.Delete End Sub
Если вы используете его в непосредственном окне, вы можете просто использовать следующую строку:
ActiveSheet.Delete
Когда вы используете приведенный выше код для удаления активного листа, Excel покажет вам приглашение, в котором вам нужно будет нажать кнопку удаления, чтобы подтвердить действие.
Удаление листа без отображения запроса на подтверждение
Окно сообщения с запросом подтверждения — это полезная функция, которая гарантирует, что у вас есть возможность отменить удаление листа в случае, если вы случайно / ошибочно запустили код.
Но если вы уже знаете, что делаете, это сообщение может сильно раздражать.
Итак, вот код VBA, который гарантирует, что листы удалены, но вы не видите окно с запросом подтверждения.
Sub DeleteSheet () Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub
В приведенном выше коде я установил для свойства Application.DisplayAlerts значение false, что означает, что Excel не будет показывать вам какие-либо предупреждения на дисплее во время выполнения кода.
Также очень важно убедиться, что вы вернули его к истине в конце кода, чтобы восстановить функциональность (как вы можете видеть, что я сделал в приведенном выше коде).
Внимание! Если для свойства Application.DisplayAlerts установлено значение false, Excel просто удалит рабочий лист, и восстановить его будет невозможно. поэтому я советую вам сделать резервную копию, прежде чем использовать такой код.
Удаление листа по имени (если он существует) с помощью VBA
VBA позволяет автоматизировать процесс удаления определенного листа (на нескольких листах) на основе имени листа.
Например, если у вас есть рабочий лист с названием «Продажи», вы можете использовать приведенный ниже код, чтобы удалить его:
Sub DeleteSheetByName () Sheets ("Продажи"). Удалить End Sub
Этот код удалит только лист с именем «Продажи».
Это полезно, когда у вас есть рабочая тетрадь с большим количеством листов, и вы не хотите просматривать все листы, найдите тот, у которого есть имя продажи, и удалите его вручную.
С приведенным выше кодом не имеет значения, сколько листов в книге, он просто удалит рабочий лист.
И поскольку я не менял свойство Application.DisplayAlert, вы увидите приглашение, в котором вам нужно будет нажать кнопку удаления, чтобы подтвердить продолжительность листа продаж.
Если вы хотите удалить несколько листов по их имени, вы также можете это сделать.
Например, приведенный ниже код удалит листы с именами Продажи, Маркетинг, Финансы:
Sub DeleteSheetsByName () Sheets («Продажи»). Delete Sheets («Marketing»). Delete Sheets («Finance»). Delete End Sub
Удаление всех листов, кроме активного листа, с помощью VBA
Если у вас есть книга с несколькими листами, и вы хотите удалить все листы, кроме активного листа, VBA, вероятно, является одним из лучших способов сделать это.
Ниже приведен код VBA, который удалит все листы, кроме активного листа в книге.
Sub DeleteSheetByName () Dim ws As Worksheet Application.DisplayAlerts = False для каждого ws в таблицах Если ws.Name ActiveSheet.Name Then ws.Delete End If Next ws Application.DisplayAlerts = True End Sub
Обратите внимание, что я сказал, что свойство Application.DisplayAlerts находится в начале кода, так как я не хочу видеть подсказку для каждого удаляемого листа.
Удалить все листы с определенной текстовой строкой в имени
Это немного более продвинутый вариант эффективного использования VBA при удалении листов.
Предположим, у вас есть книга с множеством разных листов, и вы хотите удалить все листы, в которых есть определенная текстовая строка, тогда вы можете легко сделать это с помощью VBA.
Например, ниже у меня есть рабочая книга, в которой я хочу удалить все рабочие листы, в которых есть текстовая строка «Продажи».
Ниже приведен код VBA, который сделает это:
Sub DeleteSheetByName () Dim ws As Worksheet Application.DisplayAlerts = False For Each ws In Sheets If ws.Name Like "*" & "Sales" & "*" Тогда MsgBox ws.Name ws.Delete End If Next ws Application.DisplayAlerts = Истинный конец Sub
В приведенном выше коде используется оператор if-then для просмотра всех листов в книге. Он проверяет имя всех этих рабочих листов, и если имя содержит слово «Продажи», то этот рабочий лист удаляется.
Если вы хотите изменить код и найти любую другую текстовую строку, вы можете изменить ее в пятой строке приведенного выше кода.
Также обратите внимание, что я использовал звездочку (*), которая является символом подстановки, с обеих сторон текстовой строки, которую мы ищем в имени рабочего листа. Это гарантирует, что независимо от того, где строка появляется в имени листа, она все равно будет удалена.
Вы также можете изменить код, чтобы убедиться, что удаляются только те рабочие листы, где текстовая строка появляется в начале имени рабочего листа.
Например, если вы хотите удалить те листы, в которых термин продажи появляется в начале, используйте следующий код в пятой строке.
Если ws.Name Like "*" & "Sales" & "*" Тогда
Здесь я использовал подстановочный знак только после текста «drink», а не перед ним. Это обеспечит при проверке имен рабочего листа только те, которые будут соответствовать критериям, в которых термин «Продажи» стоит в начале имени.
Итак, это некоторые из методов, которые вы можете использовать, если хотите удалить листы в Excel. В большинстве случаев вы можете легко сделать это прямо на рабочем листе с помощью мыши или сочетания клавиш.
Но если у вас тяжелая книга с большим количеством листов и вы хотите быстро удалить определенные типы листов, вы также можете использовать VBA.
Надеюсь, вы нашли этот урок полезным.
Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.
Создание новых листов
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression — переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
- Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
‘Создание рабочего листа: Sheets.Add Worksheets.Add ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Лист1 Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(1) Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(«Лист1») ‘Создание нового листа с заданным именем: Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист» ‘Создание диаграммы: Sheets.Add Type:=xlChart ‘Добавление нового листа перед ‘последним листом рабочей книги Sheets.Add Before:=Sheets(Sheets.Count) ‘Добавление нового листа в конец Sheets.Add After:=Sheets(Sheets.Count) |
- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Dim myList As Object ‘В активной книге Set myList = Worksheets.Add ‘В книге «Книга1.xlsm» Set myList = Workbooks(«Книга1.xlsm»).Worksheets.Add ‘Работаем с переменной myList.Name = «Listok1» myList.Cells(1, 1) = myList.Name ‘Очищаем переменную Set myList = Nothing |
Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Copy After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2») ‘Вставить копию в конец Лист1.Copy After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘Один лист активной книги в новую книгу Лист1.Copy ‘Несколько листов активной книги в новую книгу* Sheets(Array(«Лист1», «Лист2», «Лист3»)).Copy ‘Все листы книги с кодом в новую книгу ThisWorkbook.Worksheets.Copy |
* Если при копировании в новую книгу нескольких листов хотя бы один лист содержит умную таблицу — копирование невозможно. Один лист, содержащий умную таблицу, копируется в новую книгу без проблем.
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
‘В пределах активной книги ‘(уникальные имена листов) Лист1.Move After:=Лист2 ‘В пределах активной книги ‘(имена листов на ярлычках) Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2») ‘Размещение после последнего листа: Лист1.Move After:=Sheets(Sheets.Count) ‘Из одной книги в другую Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _ After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1») ‘В новую книгу Лист1.Move |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
Sub Peremeshcheniye() Dim x x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»») If IsNumeric(x) Then x = CLng(x) Sheets(«Лист4»).Move Before:=Sheets(x) End Sub |
Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
expression.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
‘По уникальному имени Лист1.Delete ‘По имени на ярлычке Worksheets(«Лист1»).Delete ‘По индексу листа Worksheets(1).Delete ‘В другой книге Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete |
Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Home / VBA / How to DELETE a SHEET using VBA in Excel
To delete a sheet using VBA, you need to use the VBA Delete method. You need to specify the sheet that you want to delete and then use this method. Let’s say if you want to delete the “Sheet1”, then you need to mention sheet1 and then type a dot (.) and in the end, type “Delete”.
In this tutorial, we will see different ways that you can use to delete a sheet using a VBA code. Make sure to have the developer tab on the ribbon from here you can get into the visual basic editor.
Delete a Sheet using its Name
Each sheet has a name, and you can use write a code to delete a sheet using the name. So, let’s say you want to delete the worksheet “Data”, the code would be:
Sub vba_delete_sheet()
Sheets("Data").Delete
End Sub
- When you delete a worksheet, Excel shows a message to confirm if you want to remove it or wish to cancel. And when you use a VBA code, in that case, Excel will also do that.
To deal with this, you can turn OFF the screen updating to delete a sheet and then turn it ON.
Application.DisplayAlerts = False
Sheets("Data").Delete
Application.DisplayAlerts = True
Now let’s say you want to use a cell value to use the name of the worksheet. In that case, you need to use the VBA range object to do that.
Delete the Sheet using the Sheet Number
That’s right. You can use the sheet’s number to delete it. Here’s the code.
Sub vba_delete_sheet()
Sheets(1).Delete
End Sub
Delete the ActiveSheet
To delete the active sheet, you can use the “ActiveSheet” object instead of using the sheet name to specify the sheet.
ActiveSheet.Delete
As I said, it deletes the active sheet, and you can activate it before removing it. But necessarily, you don’t need to do that as you can refer to a sheet and delete it as we have seen at the start of this tutorial.
Check if Sheet Exists before Deleting
You can also write code in a way that it can check if the sheet exists or not and then deletes it.
Sub check_sheet_delete()
Dim ws As Worksheet
Dim mySheet As Variant
mySheet = InputBox("enter sheet name")
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If mySheet = ws.Name Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
In this code, you have FOR EACH to loop through all the worksheets. And then, an IF STATEMENT to delete the sheet if its name is equal to the name you have typed in the input box.
Delete All the Worksheets in Workbook
I’m sure you have this question in your mind, but I’m afraid it’s impossible to delete all the worksheets that you have in the workbook. You must have at least one worksheet left.
But I have found a solution to this problem. You can insert a new sheet that’s a blank one and then delete all which are already there.
Here’s the code: This code adds a new sheet and deletes all the other sheets.
Sub vba_delete_all_worksheets()
Dim ws As Worksheet
Dim mySheet As String
mySheet = "BlankSheet-" & Format(Now, "SS")
Sheets.Add.Name = mySheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> mySheet Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
More Tutorials on VBA Worksheets
- Back to VBA Worksheet / VBA Tutorial
Группа: Проверенные Ранг: Форумчанин Сообщений: 153
Замечаний: |
Доброго времени суток специалисты по екселю!
Вопрос до неимоверности прост.
в макросе записана функция удалить не нужный лист
[vba]
Код
Sheets(«Plan»).Select
ActiveWindow.SelectedSheets.Delete
[/vba]
Что еще нужно добавить чтобы запретить вылетать сообщению, а просто сразу лист удаляло, а продолжало выполнять макрос!
Заранее спасибо!
Сообщение отредактировал Serge_007 — Понедельник, 25.08.2014, 23:24
Skip to content
Как удалить все листы, кроме активного
На чтение 2 мин. Просмотров 3.9k.
Что делает макрос: Макрос может удалить все листы, кроме активного рабочего листа.
Содержание
- Как макрос работает
- Код макроса
- Как работает код
- Как использовать
Как макрос работает
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа, имя активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода DisplayAlerts на шаге 4 (отключаем предупреждения Excel, чтобы не подтверждать каждое удаление).
Код макроса
Sub UdalitVseListiKromeAktivnogo() 'Шаг 1: Объявляем переменные Dim ws As Worksheet 'Шаг 2: Запускаем цикл по всем рабочим листам For Each ws In ThisWorkbook.Worksheets 'Шаг 3: Проверяем имя каждого рабочего листа If ws.Name <> ThisWorkbook.ActiveSheet.Name Then 'Шаг 4: Выключаем предупреждения Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True End If 'Шаг 5: Переходим на следующий рабочий лист Next ws End Sub
Как работает код
- Объявляем переменную WS, которая будет хранить имя каждого листа.
- На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
- На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
- Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
- На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которому следует применить макрос.
0 / 0 / 0 Регистрация: 06.12.2006 Сообщений: 10 |
|
1 |
|
Удаление листа без запроса на подтверждение.07.12.2006, 19:12. Показов 77921. Ответов 2
как решить проблему незаметного удаления листа, чтобы не появлялся запрос на подтверждение?
0 |
Dim@X 7 / 7 / 0 Регистрация: 16.08.2011 Сообщений: 52 |
||||
07.12.2006, 19:26 |
2 |
|||
7 |
0 / 0 / 0 Регистрация: 06.12.2006 Сообщений: 10 |
|
07.12.2006, 20:21 [ТС] |
3 |
Спасибо!
0 |
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Макрос может удалить все листы, кроме активного рабочего листа. Этот макрос с помощью цикла пробегает по всем рабочим листам и сверяет имя рабочего листа с именем активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода DisplayAlerts на шаге 4 (отключаем предупреждения Excel, чтобы не подтверждать каждое удаление).
Ссылка на это место страницы:
#formula
Sub
UdalitVseListiKromeAktivnogo()
Dim
ws
As
Worksheet
For
Each
ws
In
ThisWorkbook.Worksheets
If
ws.Name <> ThisWorkbook.ActiveSheet.Name
Then
Application.DisplayAlerts =
False
ws.Delete
Application.DisplayAlerts =
True
End
If
Next
ws
End
Sub
Ссылка на это место страницы:
#kak
1. Объявляем переменную WS, которая будет хранить имя каждого листа.
2. На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
3. На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
4. Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
5. На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которой следует применить макрос.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях:
- Excel VBA Удалить лист
Excel VBA Удалить лист
К этому времени мы все знаем, как снять защиту с листа. Лист удаления VBA имеет такой же способ написания кода, что и лист с незащищенной защитой. VBA Delete Sheet, как следует из названия, используется для автоматического удаления выбранного листа. Чтобы использовать функцию удаления VBA для удаления любого листа, сначала нам нужно определить, какой лист мы хотим удалить. Функция удаления VBA работает, когда мы вызываем имя листа или последовательность этого листа, а затем используем функцию удаления после этого. Ниже приведен синтаксис таблицы удаления VBA.
Вышеуказанный синтаксис будет использоваться многими различными способами в следующих примерах.
Как удалить лист в Excel VBA?
Мы узнаем, как удалить лист в Excel, используя код VBA.
Вы можете скачать этот Пример удаления листа VBA здесь — Пример удаления листа VBA
VBA Delete Sheet — Пример № 1
В этом примере мы увидим простой способ удаления любого листа. Для этого выполните следующие шаги:
Шаг 1. Откройте модуль на вкладке меню «Вставка».
Шаг 2: Теперь напишите подкатегорию VBA Delete Sheet. Мы можем использовать любое другое имя для определения кода.
Код:
Sub VBA_DeleteSheet () End Sub
Шаг 3: Используйте объект Worksheets и выберите лист, который мы хотим удалить. Здесь этот лист называется Sheet1 .
Код:
Sub VBA_DeleteSheet () Рабочие листы ("Лист1"). End Sub
Шаг 4: Теперь используйте функцию удаления после имени выбранного листа.
Код:
Sub VBA_DeleteSheet () Рабочие таблицы ("Sheet1"). Удалить End Sub
Шаг 5: Запустите код, нажав клавишу F5 или нажав кнопку воспроизведения.
Мы увидим, что система предложит нам предупреждение, что Excel удалит лист навсегда. Чтобы продолжить, нажмите « Удалить» .
Шаг 6: Мы увидим, что лист «Лист1» теперь удален.
Шаг 7: Предположим, мы пытаемся удалить лист, который не существует, или если мы в итоге введем неправильное имя. Ниже я попытался ввести имя листа, которого нет в файле Excel, как показано ниже.
Код:
Sub VBA_DeleteSheet () Рабочие таблицы ("Sheet2"). Удалить End Sub
Шаг 8: Теперь запустите код. Мы увидим, что VBA выдает нам ошибку «Subscript out of Range», что означает, что мы выбрали лист, который не существует.
VBA Delete Sheet — Пример № 2
Существует еще один способ реализации VBA Delete Sheet. Это не такой маленький код, как метод, который мы видели в примере 1. Но также простой способ реализации. Для этого выполните следующие шаги:
Шаг 1: Запишите подпроцедуру листа VBA Delete, как показано ниже.
Код:
Sub VBA_DeleteSheet2 () End Sub
Шаг 2: Теперь выберите переменную для Worksheet с любым именем. Здесь мы выбрали ExSheet, как показано ниже.
Код:
Sub VBA_DeleteSheet2 () Dim ExSheet As Worksheet End Sub
Шаг 3: Теперь установите определенную переменную с помощью функции Worksheets и вставьте имя листа, который мы хотим удалить. Здесь снова имя листа « Лист1 ».
Код:
Sub VBA_DeleteSheet2 () Dim ExSheet As Set Worksheet ExSheet = Worksheets ("Sheet1") End Sub
Шаг 4: Теперь назначьте определенную переменную функцией Delete, как показано ниже.
Код:
Sub VBA_DeleteSheet2 () Dim ExSheet As Set Worksheet ExSheet = Worksheets ("Sheet1") ExSheet.Delete End Sub
Шаг 5: Теперь запустите код, нажав клавишу F5 или нажав кнопку Play.
Мы снова получим быстрое сообщение, так как мы все еще хотим продолжить удаление выбранного листа. Нажмите на Удалить, чтобы продолжить.
VBA Delete Sheet — Пример № 3
В этом примере мы увидим, как удалить лист, который в данный момент активен. Для этого выполните следующие шаги.
Шаг 1: Запишите подпроцедуру удаления листа VBA, как показано ниже.
Код:
Sub VBA_DeleteSheet3 () End Sub
Шаг 2: Используйте ту же строку кода для объявления переменной, что и Worksheet, как показано ниже, которую мы использовали в приведенных выше примерах.
Код:
Sub VBA_DeleteSheet3 () Dim ExSheet As Worksheet End Sub
Шаг 3: Теперь откройте цикл For Next, как показано ниже.
Код:
Sub VBA_DeleteSheet3 () Dim ExSheet как рабочий лист для следующего ExSheet End Sub
Шаг 4. Теперь мы выберем активную текущую рабочую таблицу из всех рабочих таблиц, доступных в Excel Workbook.
Код:
Sub VBA_DeleteSheet3 () Dim ExSheet как рабочий лист для каждого ExSheet в ActiveWorkbook.Worksheets Next ExSheet End Sub
Шаг 5: После того, как выбранная в данный момент рабочая таблица выбрана, мы будем использовать функцию Delete с переменной ExSheet, чтобы удалить ее.
Код:
Sub VBA_DeleteSheet3 () Dim ExSheet как рабочий лист для каждого ExSheet в ActiveWorkbook.Worksheets ExSheet.Delete Next ExSheet End Sub
Шаг 6: Теперь скомпилируйте код и запустите его, если ошибки не найдены. Это удалит активную рабочую таблицу из открытой выбранной рабочей книги.
VBA Delete Sheet — Пример № 4
Код, который мы видели в примере 3, можно увидеть еще одним способом. Мы можем использовать If End If Loop вместе с циклом For Next.
Шаг 1: Давайте просто рассмотрим тот же код, который мы видели в приведенном выше примере-3.
Код:
Sub VBA_DeleteSheet4 () Dim ExSheet как рабочий лист для каждого ExSheet в ActiveWorkbook.Worksheets ExSheet.Delete Next ExSheet End Sub
Шаг 2: Этот код удаляет лист, который в данный момент активен. Что если мы улучшим это условие, выбрав лист, который в данный момент активен и с точно таким же именем? Да, для этого нам нужно открыть цикл If End If, где мы запишем условие для этого сразу после цикла For.
Код:
Sub VBA_DeleteSheet4 () Dim ExSheet как рабочий лист для каждого ExSheet в ActiveWorkbook.Worksheets, если ExSheet.Delete End, если следующий ExSheet, End Sub
Шаг 3. Теперь запишите условие в цикле If, как будто имя листа в переменной ExSheet равно и точно соответствует « Sheet1 » (или любому другому имени листа), затем удалите этот лист, используя переменную ExSheet.
Код:
Sub VBA_DeleteSheet4 () Dim ExSheet как рабочий лист для каждого ExSheet в ActiveWorkbook.Worksheets Если ExSheet.Name "Sheet1", то ExSheet.Delete End, если Next ExSheet End Sub
Шаг 4: Мы можем скомпилировать код здесь, так как здесь нужно выполнить много шагов. Затем запустите код после этого.
Снова мы получим сообщение, в котором мы все еще хотим удалить этот лист или нет. Нажав на «Удалить», он удалит выбранный лист.
Плюсы Excel VBA Удалить лист
- Это очень полезно, когда у нас есть огромный набор данных на разных листах, которые мы должны довольно часто удалять после выполнения задачи.
- Код, показанный в примере-1, является самым простым кодом для применения.
- Мы даже можем выбрать более одного листа, который мы хотим удалить.
То, что нужно запомнить
- Мы можем также выбрать последовательность листа вместо имени листа, которое мы хотим удалить.
- Причиной получения предупреждения перед удалением листа является то, что Excel предлагает нам проверить, есть ли какие-либо данные, которые мы не хотим потерять.
- Как только мы закончим с кодированием, сохраните файл Excel в формате Macro enable Excel, чтобы избежать потери написанного кода.
Рекомендуемые статьи
Это руководство по удалению VBA. Здесь мы обсудим, как удалить лист в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Коллекция VBA (Примеры)
- VBA IF Заявления | Шаблоны Excel
- Как использовать функцию сортировки Excel VBA?
- VBA While Loop (Примеры с шаблоном Excel)
- VBA Environ