Перейти к содержимому

VBA Excel. Рабочий лист — создание, копирование, удаление

Создание, копирование, перемещение и удаление рабочих листов в VBA Excel. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.

  1. Создание новых листов
  2. Копирование листов
  3. Перемещение листов
  4. Удаление листов

Создание новых листов

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

Примеры создания листов

'Создание рабочего листа:
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")

'Создание диаграммы:
Sheets.Add Type:=xlChart

'Добавление нового листа перед
'последним листом рабочей книги
Sheets.Add Before:=Worksheets(Worksheets.Count)

'Добавление нового листа в конец
Sheets.Add After:=Worksheets(Worksheets.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.Copy After:=Лист2

'В пределах активной книги
'(имена листов на ярлычках)
Worksheets("Лист1").Copy Before:=Worksheets("Лист2")

'Вставить копию в конец:
Лист1.Copy After:=Worksheets(Worksheets.Count)

'Из одной книги в другую
Workbooks("Книга1.xlsm").Worksheets("Лист1").Copy _
After:=Workbooks("Книга2.xlsm").Worksheets("Лист1")

'Один лист активной книги в новую книгу 
Лист1.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.Move After:=Лист2

'В пределах активной книги
'(имена листов на ярлычках)
Worksheets("Лист1").Move Before:=Worksheets("Лист2")

'Размещение после последнего листа:
Лист1.Move After:=Worksheets(Worksheets.Count)

'Из одной книги в другую
Workbooks("Книга1.xlsm").Worksheets("Лист1").Move _
After:=Workbooks("Книга2.xlsm").Worksheets("Лист1")

'В новую книгу 
Лист1.Move

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Удаление листов

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