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, а не рабочей книги, к которому следует применить макрос.
2 / 2 / 0 Регистрация: 19.10.2015 Сообщений: 176 |
|
1 |
|
17.12.2016, 12:02. Показов 4007. Ответов 2
Здравствуйте. Нашел макрос но у меня что-то не хочет работать, помогите человеку далекому от программирования. Код Sub RemoveHiddenSheets() Dim ws As Worksheet Dim arrSheets As Variant ReDim arrSheets(0) As String With ActiveWorkbook MsgBox "Всего листов до удаления скрытых: " & .Worksheets.Count Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In .Worksheets If ws.Visible <> xlSheetVisible Then arrSheets(UBound(arrSheets)) = ws.Name ReDim Preserve arrSheets(UBound(arrSheets) + 1) End If Next ws ReDim Preserve arrSheets(UBound(arrSheets) - 1) .Worksheets(arrSheets).Delete Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Всего листов после удаления скрытых: " & .Worksheets.Count End With End Sub
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
17.12.2016, 13:29 |
2 |
|||
lapin9126,
Учтите, что этот макрос удалит ВСЕ листы, кроме текущего, включая скрытые, очень скрытые, диаграммы, листы макросов.
1 |
2 / 2 / 0 Регистрация: 19.10.2015 Сообщений: 176 |
|
17.12.2016, 13:36 [ТС] |
3 |
То что нужно, СПАСИБОООООООО!!!!!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
17.12.2016, 13:36 |
3 |
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#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.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях:
Удалить все листы в книге кроме некоторых
Автор SergioGach, 10.05.2011, 23:00
« назад — далее »
Добрый день!
Не подскажете, как можно решить подобную задачу:
В книге есть листы ( разное количество, каждый раз разные имена), нужно удалить все кроме некоторих (имена которых известны и постоянны).
Например: Есть 3 листа (имя постоянное), макрос копирует еще n-ое (3 или 5 или 15) количество листов (имена разные, неизвестные).
Печатаем книгу, сохраняем. Следующий макрос удаляет все листы кроме первих трех.
Спасибо!
примерно так:
Sub Del3Sheets()
Dim s As Object, a As Variant, i As Integer, d As Boolean
a = Array("SheetName1", "SheetName2", "SheetName3")
Application.DisplayAlerts = False
For Each s In Sheets
d = True
For i = LBound(a) To UBound(a)
If s.Name = a(i) Then d = False
Next i
If d Then s.Delete
Next s
Application.DisplayAlerts = True
End Sub
Спасибо! Работает так как нужно
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Удалить все листы в книге кроме некоторых
Содержание
- Как очистить все листы vba excel
- Как очистить весь лист или указанный диапазон в Excel?
- Как очистить все листы vba excel
- Как удалить все листы, кроме активного
- Как макрос работает
- Код макроса
- Как работает код
- Как использовать
- Как очистить все листы vba excel
- Как удалить все листы, кроме активного
- Как макрос работает
- Код макроса
- Как работает код
- Как использовать
Как очистить все листы vba excel
Как очистить весь лист или указанный диапазон в Excel?
Эта статья покажет вам, как быстро очистить содержимое с форматированием ячеек всего листа или указанного диапазона или без него с помощью кода VBA в Excel.
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
Приведенные ниже коды VBA помогут вам очистить весь лист с форматированием ячеек или без него.
1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем скопируйте ниже код VBA в модуль.
Если вы просто хотите очистить содержимое ячейки, но сохранить форматирование, попробуйте этот код.
Код VBA: очистить весь лист без форматирования ячеек
Если вы хотите очистить и содержимое, и форматирование ячеек, этот код может вам помочь.
Код VBA: очистить весь лист с форматированием ячеек
Внимание: В коде Sheet4 — это имя рабочего листа, с которого вы очистите содержимое. Пожалуйста, измените его по своему усмотрению.
3. нажмите F5 или нажмите кнопку «Выполнить», чтобы запустить код.
Затем указанный рабочий лист с форматированием ячеек или без него немедленно очищается.
Для очистки только указанного диапазона на листе вы можете попробовать следующий код VBA.
1. Откройте рабочий лист, из которого вы очистите указанный диапазон, затем нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем скопируйте ниже код VBA в модуль.
Очистить диапазон, но сохранить форматирование, попробуйте этот код.
Код VBA: очистить указанный диапазон без форматирования ячеек
Очистить диапазон с форматированием ячеек, используйте этот код:
Код VBA: очистить указанный диапазон с форматированием ячеек
Внимание: A1: C10 — это диапазон, который вы очистите на листе.
3. нажмите F5 ключ или щелкните Run кнопку, чтобы очистить диапазон.
Источник
Как очистить все листы vba excel
Для удаления всех листов в книге Excel, кроме указанного одного или текущего активного листа, вы можете справиться с этим, как показано ниже.
The Delete All Inactive Sheets utility of Kutools for Excel helps you easily delete all worksheet in current workbook except the active one. See screenshot:
Kutools for Excel includes more than 300 handy Excel tools. Free to try with no limitation in 60 days. Download the free trial now
С помощью приведенного ниже кода VBA вы можете удалить весь лист в книге, кроме определенного в Excel.
1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Приложение Microsoft Visual Basic окно.
2. Нажмите Вставить > Модули, затем скопируйте и вставьте ниже код VBA в окно модуля.
Код VBA: удалить все листы, кроме указанных
Заметки:
1. » Sheet1 (Основной ключ) и Sheet2 »- это листы, которые вы хотите сохранить в текущей книге. Вы можете изменить их в зависимости от ваших потребностей.
2. Если вы хотите удалить все, но оставить больше листов, добавьте код И xWs.Name <> » имя вашего листа » до Затем слово в шестой строке кода. Такие как:
Если xWs.Name <> «Sheet1» и xWs.Name <> «Sheet2» И xWs.Name <> «имя вашего листа» Затем
3. Если вы хотите оставить только один лист и удалить все из книги, удалите все И, условие в коде. Например, чтобы сохранить Sheet1 в текущей книге, вам нужно изменить код шестой строки на: Если xWs.Name <> «Sheet1» Тогда
Y Вы можете легко удалить все листы, кроме текущего активного листа, одним щелчком мыши. Удалить все неактивные листы полезности Kutools for Excel.
Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.
1. Нажмите Кутулс Плюс > Рабочий лист > Удалить все неактивные листы.
3. Затем появится диалоговое окно. Если вы решили удалить все листы, кроме активного, нажмите кнопку OK кнопку, в противном случае нажмите кнопку Отмена кнопку.
Затем удаляются все листы, кроме текущего активного в вашей книге.
Если вы хотите получить бесплатную пробную версию ( 30 -день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Источник
Как удалить все листы, кроме активного
Что делает макрос: Макрос может удалить все листы, кроме активного рабочего листа.
Как макрос работает
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа, имя активного листа. Каждый раз, когда имя не совпадает, он удаляет лист. Обратите внимание на использование метода DisplayAlerts на шаге 4 (отключаем предупреждения Excel, чтобы не подтверждать каждое удаление).
Код макроса
Как работает код
- Объявляем переменную WS, которая будет хранить имя каждого листа.
- На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге. Существует разница между ThisWorkbook и ActiveWorkbook. Объект ThisWorkbook относится к книге, в которой написан код макроса. ActiveWorkbook относится к книге, которая в данный момент активна. Они часто возвращают один и тот же объект, но, если рабочая книга работает, а код находится не в активной рабочей книге, они возвращают различные объекты. В этом случае, мы не хотим рисковать удалением листов в других книгах, так что мы используем ThisWorkbook.
- На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
- Если имена листов различны, макрокоманда удаляет лист. Мы используем DisplayAlerts, чтобы подавить любые проверки подтверждения из Excel (чтобы не появлялось системное сообщение с вопросом: «Вы действительно хотите удалить лист?»)
- На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Обратите внимание, что при использовании ThisWorkbook в макросе вместо ActiveWorkbook, вы не сможете запустить макрос из личных макросов. Это потому, что ThisWorkbook относится к Personal Macro Workbook, а не рабочей книги, к которому следует применить макрос.
Источник
Как очистить все листы vba excel
Модератор форума: китин, _Boroda_
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Очистка данных со всех листов, по условию (Макросы/Sub)
Очистка данных со всех листов, по условию
kleo90 | Дата: Вторник, 28.06.2016, 17:19 | Сообщение № 1 | |
|