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

Содержание

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

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

Создаваемый лист можно присвоить объектной переменной:

1

2

3

4

5

6

7

8

9

10

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» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:

1

2

3

4

5

6

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

2

3

4

5

6

7

8

9

10

11

‘По уникальному имени

Лист1. Delete

 

‘По имени на ярлычке

Worksheets(«Лист1»).Delete

 

‘По индексу листа

Worksheets(1).Delete

 

‘В другой книге

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete

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

Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.

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

Создание или замена листа | Microsoft Learn





Twitter




LinkedIn




Facebook




Адрес электронной почты










  • Статья

  • Чтение занимает 2 мин

В следующих примерах показано, как определить, существует ли лист, а затем создать или заменить его.

Пример кода предоставил: Том Уртис, Atlas Programming Management

Определение наличия листа

В этом примере показано, как определить, существует ли лист с именем Sheet4 с помощью свойства Name объекта Worksheet . Имя листа задается переменной mySheetName .

Sub TestSheetYesNo()
    Dim mySheetName As String, mySheetNameTest As String
    mySheetName = "Sheet4"
    
    On Error Resume Next
    mySheetNameTest = Worksheets(mySheetName).Name
    If Err.Number = 0 Then
        MsgBox "The sheet named ''" & mySheetName & "'' DOES exist in this workbook."
    Else
        Err.Clear
        MsgBox "The sheet named ''" & mySheetName & "'' does NOT exist in this workbook."
    End If
End Sub

Создание листа

В этом примере показано, как определить, существует ли лист с именем Sheet4. Имя листа задается переменной mySheetName . Если лист не существует, в этом примере показано, как создать лист с именем Sheet4 с помощью метода Add объекта Worksheets .

Sub TestSheetCreate()
    Dim mySheetName As String, mySheetNameTest As String
    mySheetName = "Sheet4"
    
    On Error Resume Next
    mySheetNameTest = Worksheets(mySheetName).Name
    If Err.Number = 0 Then
        MsgBox "The sheet named ''" & mySheetName & "'' DOES exist in this workbook."
    Else
        Err.Clear
        Worksheets.Add.Name = mySheetName
        MsgBox "The sheet named ''" & mySheetName & "'' did not exist in this workbook but it has been created now."
    End If
End Sub

Замена листа

В этом примере показано, как определить, существует ли лист с именем Sheet4. Имя листа задается переменной mySheetName . Если лист существует, в этом примере показано, как удалить существующий лист с помощью метода Delete объекта Worksheet , а затем создать новый лист с именем Sheet4.

Важно При удалении листа удаляются все данные на исходном листе с именем Sheet4.

Sub TestSheetReplace()
    Dim mySheetName As String
    mySheetName = "Sheet4"
    
    Application. DisplayAlerts = False
    On Error Resume Next
    Worksheets(mySheetName).Delete
    Err.Clear
    Application.DisplayAlerts = True
    Worksheets.Add.Name = mySheetName
    MsgBox "The sheet named ''" & mySheetName & "'' has been replaced."
End Sub

Об участнике

Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.






Листов. Метод добавления (Excel) | Microsoft Узнайте

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья
  • 2 минуты на чтение

Создает новый рабочий лист, диаграмму или лист макросов. Новый рабочий лист становится активным листом.

Синтаксис

выражение . Добавить ( До , После , Счетчик , Тип )

выражение Переменная, представляющая объект Sheets .

Параметры

Имя Требуется/дополнительно Тип данных Описание
До Дополнительно Вариант Объект, указывающий лист, перед которым добавляется новый лист.
После Дополнительно Вариант Объект, указывающий лист, после которого добавляется новый лист.
Количество Дополнительно Вариант Количество добавляемых листов. Значение по умолчанию — количество выбранных листов.
Тип Дополнительно Вариант Задает тип листа. Может быть одной из следующих констант XlSheetType : xlWorksheet , xlChart , xlExcel4MacroSheet или xlExcel4IntlMacroSheet . Если вы вставляете лист на основе существующего шаблона, укажите путь к шаблону. Значение по умолчанию — xlWorksheet .

Возвращаемое значение

Значение объекта, представляющее новый рабочий лист, диаграмму или лист макросов.

Если До и После опущены, новый лист вставляется перед активным листом.

Пример

В этом примере вставляется новый рабочий лист перед последним рабочим листом в активной книге.

 ActiveWorkbook.Sheets.Add До:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets. Count)
 

В этом примере новый рабочий лист вставляется после последнего рабочего листа в активной книге и фиксирует возвращенную ссылку на объект в локальной переменной.

 Размерный лист Как рабочий лист
Установить лист = ActiveWorkbook.Sheets.Add(После:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count))
 

Примечание

В 32-разрядной версии Excel 2010 этот метод не может создать более 255 листов одновременно.

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

Как написать код VBA для создания нового листа в Excel (макрос)

Sheets.Add Method

Написать код VBA для добавления нового листа в рабочую книгу

Различные способы добавления новых листов в рабочую книгу с помощью Код VBA

1. Добавить один лист

2. Добавить несколько листов

3. Добавить лист с именем

4. Добавить лист с именем из ячейки

5. Добавить лист после/перед a Конкретный лист

6. Добавить новый лист в начале

7. Добавить новый лист в конце (после последнего листа)

8. Добавить несколько листов и использовать имена из диапазона вы можете написать код VBA, чтобы вставить новый лист в книгу.

Ну, уже есть горячая клавиша для вставки нового рабочего листа, или вы также можете использовать обычную опцию, но преимущество использования кода VBA заключается в том, что вы можете добавить несколько рабочих листов одним щелчком мыши, и вы также можете определить это там, где вы хотите добавить его.

Для этого вам нужно использовать метод Sheets.Add, и в этом посте мы узнаем, как использовать его для добавления одного или нескольких листов в книгу.

Sheets.Add Method

 Sheets.Add ([До], [После], [Количество], [Тип]) 
  • До: добавление нового листа перед листом.
  • После: Чтобы добавить новый лист перед листом.
  • Количество: Количество листов для добавления.
  • Тип: Тип листа, который вы хотите добавить (ССЫЛКА)

Напишите код VBA для ДОБАВЛЕНИЯ нового листа в книгу

Откройте базовый визуальный редактор и выполните следующие действия.

  • Во-первых, вам нужно ввести метод Sheets.Add.
  • Затем вам нужно определить место для добавления нового листа (До или После).
  • Следующее, что нужно сделать, это ввести количество рабочих листов.
  • В конце концов, тип листа.

Различные способы добавления новых листов в книгу с помощью кода VBA

Ниже приведены различные способы добавления нового листа в книгу:

1. Добавление одного листа

Чтобы добавить один лист, вы можете использовать приведенный ниже код, в котором вы не указали никаких аргументов.

 ПодлистAddExample1()
ActiveWorkbook.Sheets.Добавить
End Sub 

Этот код указывает Excel добавить лист в активную книгу, но поскольку у вас нет аргументов, он будет использовать значения по умолчанию и добавит один рабочий лист (xlWorksheet) перед активным листом.

Вот еще один способ написать это, посмотрите код ниже.

 ПодлистAddExample2()
Листы.Добавить
Конец суб 

Поскольку вы уже находитесь в активной рабочей книге, вы также можете использовать приведенный ниже код. Он делает то же самое.

2. Добавление нескольких листов

Чтобы добавить несколько листов за один раз, вам просто нужно определить аргумент COUNT с количеством листов, которые вы хотите добавить.

 Дополнительные листы добавления3()
Sheets.Add Count:=5
End Sub 

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

3. Добавить лист с именем

Если вы хотите переименовать лист после его добавления, вы можете использовать следующий код:

 Sub AddNewSheetswithNameExample1()
Sheets.Add.Name = "myNewSHeet"
End Sub 

В приведенном выше коде мы использовали объект имени (ССЫЛКА), который помогает вам указать имя листа.

4. Добавить лист с именем из ячейки

Вы также можете взять значение для использования в качестве имени листа из ячейки.

 Sub AddNewSheetswithNameExample2()
Листы.Добавить.Имя = Диапазон ("A1")
Конец суб 

В приведенном выше коде ячейка A1 используется для получения имени нового листа.

5. Добавить лист после/перед определенным листом

Поскольку эти аргументы уже есть в Sheets.Add, где вы можете указать лист, чтобы добавить новый лист до или после него.

 Sub AddSheetsExample5()
Sheets.Add Before:=Worksheets("mySheet")
Sheets.Add After:=Worksheets("mySheet")
End Sub 

Теперь в приведенном выше коде у вас есть две строки кода, которые вы использовали до и после аргумента в методе Sheet.Add. Итак, когда вы запускаете этот код, он добавляет два листа, один перед и один после «mySheet».

6. Добавить новый лист в начале

С помощью аргумента «до» вы также можете добавить лист в начало листов, которые есть в вашей книге.

По сути, мы собираемся указать номер листа вместо имени листа.

 Sub AddSheetsExample6()
Листы.Добавить до:=Листы(1)
End Sub 

В приведенном выше коде вы использовали номер листа (1), который указывает VBA добавить лист перед листом, который находится на первой позиции во всех рабочих листах. Таким образом, он всегда будет добавлять новый лист в начале.

7. Добавить новый лист в конце (после последнего листа)

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

 Sub AddSheetsExample8()
Sheets.Add After:= Sheets(Sheets.Count)
End Sub 

В приведенном выше коде Sheet.Count возвращает количество листов, которые у вас есть в книге, и, поскольку вы определили аргумент after, он добавляет новый лист после последнего листа в книге.

8. Добавление нескольких листов и использование имен из диапазона

Следующий код подсчитывает строки из диапазона A1:A7. После этого он циклически добавляет листы в соответствии со счетом из диапазона и использует значения из диапазона, чтобы назвать лист при его добавлении.

 Sub AddSheetsExample9()
Dim Sheets_count как целое число
Dim имя_листа как строка
Dim i как целое число
sheet_count = Диапазон ("A1: A7"). Строки. Количество
Для i = 1
  имя_листа = Листы("мойЛист").Диапазон("A1:A7").Ячейки(i, 1).Значение
  Листы.Добавить().Имя = имя_листа
Далее я
Конец суб 

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

В этом случае вам нужно написать код, который может проверить, существует ли лист с таким именем или нет, и является ли ячейка, из которой вы хотите взять имя листа, пустой или нет.

Если выполняются только оба условия, то следует добавить новый лист. Позвольте мне разделить это на два шага:

Первые , вам нужно написать пользовательскую функцию Excel , чтобы проверить, существует ли уже лист с таким именем или нет.

 Функция SheetCheck(имя_листа как строка) как логическое значение
Dim ws As рабочий лист
ЛистПроверка = Ложь
 
Для каждого ws в ThisWorkbook.Worksheets
 
    Если ws.Name = имя_листа Тогда
    
        ЛистПроверка = Истина
        
    Конец, если
 
Следующий
 
End Function 

Во-вторых, вам нужно написать код, использующий эту функцию, и этот код также должен проверять, пуста ли ячейка с именем.

 Подпрограмма AddMultipleSheet2()
Dim Sheets_count как целое число
Dim имя_листа как строка
Dim i как целое число
sheet_count = Диапазон ("A1: A7"). Строки. Количество
Для i = 1
    имя_листа = Листы("мойЛист").Диапазон("A1:A10").Ячейки(i, 1).Значение
    
    Если SheetCheck(имя_листа) = False И имя_листа <> "" Тогда
    Листы.Добавить().Имя = имя_листа
    Конец, если
Далее я
End Sub 

Теперь в приведенном выше коде вы использовали оператор VBA IF, и в этом операторе у вас есть функция проверки листа, которая проверяет имя листа, а затем у вас есть условие для проверки, имеет ли ячейка имени пустое значение.