Excel макрос при удалении листа

0 / 0 / 0

Регистрация: 06.12.2006

Сообщений: 10

1

Удаление листа без запроса на подтверждение.

07.12.2006, 19:12. Показов 77820. Ответов 2


Студворк — интернет-сервис помощи студентам

как решить проблему незаметного удаления листа, чтобы не появлялся запрос на подтверждение?



0



Dim@X

7 / 7 / 0

Регистрация: 16.08.2011

Сообщений: 52

07.12.2006, 19:26

2

Visual Basic
1
2
3
Application.DisplayAlerts = False
Sheets("Лист1").Delete
Application.DisplayAlerts = True



7



0 / 0 / 0

Регистрация: 06.12.2006

Сообщений: 10

07.12.2006, 20:21

 [ТС]

3

Спасибо!



0



ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

Создание, копирование, перемещение и удаление рабочих листов 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, смотрите в этой статье.

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 153


Репутация:

1

±

Замечаний:
0% ±


Excel 2010, 2013, 2016

Доброго времени суток специалисты по екселю!
Вопрос до неимоверности прост.

в макросе записана функция удалить не нужный лист
[vba]

Код

Sheets(«Plan»).Select
ActiveWindow.SelectedSheets.Delete

[/vba]

Что еще нужно добавить чтобы запретить вылетать сообщению, а просто сразу лист удаляло, а продолжало выполнять макрос!

Заранее спасибо!

Сообщение отредактировал Serge_007Понедельник, 25.08.2014, 23:24

Как удалить лист в Экселе

На чтение 4 мин. Просмотров 866

Что делает макрос: Одной из самых привлекательных особенностей сводной таблицы является то, что она дает вам возможность при помощи двойного щелчка мышью по ряду просмотреть детали. Подробности выводятся на новый лист, который вы можете просмотреть. В большинстве случаев, вы не хотите, чтобы эти листы были, так как становятся помехой, заставляя вас тратить время, чтобы очистить их.
Особенно это становится проблемой, когда вы распространяете отчеты сводных таблиц для пользователей, которые часто смотрят детали. Нет никакой гарантии, что они вспомнят, что нужно очистить листы. Хотя эти листы, вероятно, не вызовут проблемы, они могут загромождать рабочую книгу.
Этот макрос поможет автоматически удалять листы с детализацией сводной.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Код макроса
  5. Как это код работает
  6. Как использовать

Как макрос работает

Основная предпосылка этого макроса на самом деле очень простая. Когда пользователь нажимает кнопку для деталей, макрос просто переименовывает выходной лист так, чтобы первые десять символов являлись PivotDrill. Затем рабочая книга закрывается, макрос находит любой лист, который начинается с PivotDrill и удаляет его.
Реализация действительно немного сложнее, потому что вы по существу должны иметь две части кода. Одна часть идет в случае Worksheet_BeforeDoubleClick, в то время как другая часть переходит в событие Workbook_BeforeClose.

Код макроса

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
'Шаг 1: объявляем переменные
Dim pt As String
'Шаг 2: Выход, если Двойной щелчок по ячейке, не связанной со сводной 'таблицей
On Error Resume Next
If IsEmpty(Target) And ActiveCell.PivotField.Name <> "" Then
Cancel = True
Exit Sub
End If
'Шаг 3: Установите объект PivotTable
pt = ActiveSheet.Range(ActiveCell.Address).PivotTable
'Шаг 4: Вывести детализацию
If ActiveSheet.PivotTables(pt).EnableDrilldown Then
Selection.ShowDetail = True
ActiveSheet.Name = _
Replace(ActiveSheet.Name, "Лист", "PivotDrill")
End If
End Sub

Как этот код работает

  • Шаг 1 начинается с создания переменной объекта PT для нашей сводной таблицы.
  • Шаг 2 проверяет двойной щелчок ячейки. Если ячейка не связана с какой-либо сводной таблицы, мы отменяем событие двойного щелчка.
  • Если в сводной таблице действительно связана с ячейкой, Шаг 3 заполняет переменную PT с сводной таблицы.
  • И, наконец, шаг 4 проверяет свойство EnableDrillDown. Если он включен, мы вызываем метод ShowDetail. Это выводит детали детализации вплоть до нового листа.

Макрос переименовывает выходной лист так, чтобы первые десять символов были PivotDrill. Мы делаем это с помощью функции Replace. Функция Заменить заменяет определенный текст в выражении с другим текстом. В этом случае мы заменяем слово лист с PivotDrill: Replace (ActiveSheet.Name, «Лист», «PivotDrill»). Лист1 становится PivotDrill1; Лист12 становится PivotDrill12, и так далее.
Затем макрос создает событие Worksheet_BeforeDoubleClick. Как следует из названия, этот код работает, когда рабочая книга закрывается.

Код макроса

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Шаг 5: Объявляем переменные
Dim ws As Worksheet
'Шаг 6: Проходим через рабочие листы
For Each ws In ThisWorkbook.Worksheets
'Шаг 7: Удаляем любой лист, который начинается с Pivot Drill
If Left(ws.Name, 10) = "PivotDrill" Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
End Sub

Как это код работает

  • Шаг 5 объявляет переменную WS рабочего листа. Это используется для хранения объектов рабочего листа.
  • Шаг 6 начинает цикл, говоря Excel, что мы хотим оценить все рабочие листы в этой книге.
  • На последнем этапе мы оцениваем имя листа, который имеет фокус в цикле. Если левые десять символов этого имени листа PivotDrill, мы удаляем рабочий лист. После того, как все листы были оценены, все Детализации были очищены, макрос останавливается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
  5. Выберите событие BeforeDoubleClick из раскрывающегося списка событий.
  6. Введите или вставьте код.

Понравилась статья? Поделить с друзьями:
  • Excel макрос при нажатии гиперссылки
  • Excel макрос при изменении значения ячейки
  • Excel макрос при изменении данных
  • Excel макрос при изменение в ячейке
  • Excel макрос при закрытии файла