Как создать новый лист с помощью кода vba?

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

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

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

Листы.Добавить метод

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

Напишите код VBA, чтобы добавить новый лист в книгу.

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

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

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

Пример файла