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

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

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].