Как создать новый лист с помощью кода vba?
Когда вы начнете изучать VBA, одна из самых интересных вещей, которые вы можете сделать, — это написать код VBA для вставки нового листа в книгу.
Что ж, уже есть сочетание клавиш для вставки нового листа, или вы также можете использовать обычный вариант, но преимущество использования кода VBA заключается в том, что вы можете добавить несколько листов одним щелчком мыши, а также определить, куда вы хотите добавить. это.
Для этого вам нужно использовать метод Sheets.Add, и в этой статье мы узнаем, как использовать его для добавления одного или нескольких листов в книгу.
Листы.Добавить метод
Sheets.Add ([Before], [After], [Count], [Type])
- До: добавить новый лист перед листом.
- После: добавить новый лист перед листом.
- Количество: количество добавляемых листов.
- Тип: тип листа, который вы хотите добавить ( ССЫЛКА ).
Напишите код VBA, чтобы добавить новый лист в книгу.
Откройте редактор Visual Basic и выполните следующие действия.
- Сначала вам нужно войти в метод Sheets.Add.
- Далее вам нужно определить, куда добавить новый лист (До или После).
- Следующее, что нужно сделать, это ввести количество листов.
- В конечном итоге тип листа.

Различные способы добавления новых листов в книгу с помощью кода VBA
Ниже приведены различные способы добавления нового листа в книгу:
1. Добавьте один лист
Чтобы добавить один лист, вы можете использовать приведенный ниже код, в котором вы не указали никаких аргументов.
Sub SheetAddExample1() ActiveWorkbook.Sheets.Add End Sub
Этот код сообщает Excel добавить лист в активную книгу, но, поскольку у вас нет аргументов, он будет использовать значения по умолчанию и добавит лист (xlWorksheet) перед активным листом.
Вот еще один способ написать это, см. код ниже.
Sub SheetAddExample2() Sheets.Add End Sub
Поскольку вы уже находитесь в активной книге, вы также можете использовать приведенный ниже код. Он делает то же самое.
2. Добавьте несколько листов
Чтобы добавить несколько листов одновременно, просто задайте в аргументе COUNT количество листов, которые вы хотите добавить.
Sub AddSheets3() Sheets.Add Count:=5 End Sub
Теперь количество листов, которое вы устанавливаете, равно 5, поэтому, когда вы запускаете этот код, он мгновенно добавляет пять новых листов в книгу.
3. Добавьте лист с именем
Если вы хотите переименовать лист после его добавления, вы можете использовать следующий код:
Sub AddNewSheetswithNameExample1() Sheets.Add.Name = "myNewSHeet" End Sub
В приведенном выше коде мы использовали объект имени ( LINK ), который помогает вам указать имя листа.
4. Добавляем лист с именем из ячейки
Вы также можете взять значение, которое будет использоваться в качестве имени листа, из ячейки.
Sub AddNewSheetswithNameExample2() Sheets.Add.Name = Range("A1") End Sub
В приведенном выше коде ячейка A1 используется для получения имени нового листа.
5. Добавьте лист после/перед определенным листом.
Поскольку эти аргументы уже есть в Sheets.Add, где вы можете указать лист для добавления нового листа до или после.
Sub AddSheetsExample5() Sheets.Add Before:=Worksheets("mySheet") Sheets.Add After:=Worksheets("mySheet") End Sub
Теперь в приведенном выше коде есть две строки кода, которые вы использовали до и после аргумента в методе Sheet.Add. Поэтому, когда вы запускаете этот код, он добавляет два листа: один до и один после «mySheet».
6. Добавьте новый лист в начало
Используя аргумент перед использованием, вы также можете добавить лист в начало листов, имеющихся в вашей книге.
Итак, по сути, мы собираемся указать номер листа вместо имени листа.
Sub AddSheetsExample6() Sheets.Add Before:=Sheets(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 As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A7").Cells(i, 1).Value Worksheets.Add().Name = sheet_name Next i End Sub
Но с помощью приведенного выше кода возможно, что имя листа, который вы хотите добавить, уже существует или у вас есть пустая ячейка в диапазоне имен.
В этом случае нужно написать код, который сможет проверить, существует ли уже лист с таким именем или нет и пуста или нет ячейка, откуда вы хотите взять имя листа.
Если оба условия соблюдены, то следует добавить новый лист. Позвольте мне разделить это на два этапа:
Прежде всего , вам нужно написать пользовательскую функцию Excel , чтобы проверять, существует ли уже лист с таким именем или нет.
Function SheetCheck(sheet_name As String) As Boolean Dim ws As Worksheet SheetCheck = False For Each ws In ThisWorkbook.Worksheets If ws.Name = sheet_name Then SheetCheck = True End If Next End Function
Во-вторых, вам нужно написать код, использующий эту функцию, и этот код также должен проверять, пуста ли ячейка имени или нет.
Sub AddMultipleSheet2() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A10").Cells(i, 1).Value If SheetCheck(sheet_name) = False And sheet_name <> "" Then Worksheets.Add().Name = sheet_name End If Next i End Sub
Теперь в приведенном выше коде вы использовали оператор VBA IF , и в этом операторе у вас есть функция проверки листа, которая проверяет имя листа, а затем у вас есть условие, позволяющее проверить, имеет ли ячейка имени пустое значение.