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 в скобках.

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

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

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.Delete

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

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

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

Worksheets(1).Delete

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

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

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

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

8 ответов

Попробуйте следующее:

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

Или используйте предложение With, чтобы избежать неоднократного вызова вашего объекта

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

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

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

L42
20 дек. 2013, в 07:01

Поделиться

Пожалуйста, используйте этот один вкладыш:

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"

Amar
03 янв. 2016, в 06:24

Поделиться

Попробуйте следующее:

Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
    On Error GoTo the_dark

    Dim wsSheet As Worksheet
    Dim bFoundWS As Boolean
    bFoundWS = False
    If inNamePrefix <> "" Then
        Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
    End If

    If inBeforeOrAfter = iAfter Then
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
        Else
            Worksheets.Add(After:=wsSheet).Name = inName
        End If
    Else
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(Before:=Worksheets(1)).Name = inName
        Else
            Worksheets.Add(Before:=wsSheet).Name = inName
        End If
    End If

    Set addSheet = findWS(inWB, inName, bFoundWS)         ' just to confirm it exists and gets it handle

    the_light:
    Exit Function
    the_dark:
    MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
    Err.Clear
    GoTo the_light
End Function

Mr F
07 окт. 2014, в 12:45

Поделиться

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(при добавлении листа, в любом случае это будет активный лист)

Saptarshi
14 сен. 2015, в 09:11

Поделиться

Попробуйте использовать:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

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

Function funcCreateList(argCreateList)
    For Each Worksheet In ThisWorkbook.Worksheets
        If argCreateList = Worksheet.Name Then
            Exit Function ' if found - exit function
        End If
    Next Worksheet
    Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function

Когда функция будет создана, вы можете вызвать ее из основного Sub, например:

Sub main

    funcCreateList "MySheet"

Exit Sub

Ivan Tokarev
23 март 2016, в 10:24

Поделиться

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

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

спасибо,

Developer
15 нояб. 2016, в 19:44

Поделиться

Это даст вам возможность:

  • Перезаписать или сохранить вкладку с тем же именем.
  • Поместите лист на конец всех вкладок или рядом с текущей вкладкой.
  • Выберите свой новый лист или активный.

Call CreateWorksheet("New", False, False, False)


Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
  activeSheetNumber = Sheets(ActiveSheet.Name).Index

  If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
    If (preserveOldSheet) Then
      MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
      Exit Sub
    End If
      Application.DisplayAlerts = False
      Worksheets(sheetName).Delete
    End If

    If (isLastSheet) Then
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
    Else 'Place sheet after the active sheet.
      Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
    End If

    If (selectActiveSheet) Then
      Sheets(activeSheetNumber).Activate
    End If

End Sub

moberme
17 окт. 2017, в 22:40

Поделиться

Это быстрое и простое добавление именованной вкладки к текущему листу:

Sheets.Add.Name = "Tempo"

Jan
22 окт. 2015, в 20:37

Поделиться

Ещё вопросы

  • 0Проверка Javascript для флажков в JQuery DataTable
  • 1Как сделать анимацию в представлениях в Android?
  • 0MySQL сохранить порядок в группе для дочерней таблицы
  • 0Facebook PHP SDK Version 3, Исключение события
  • 0Вложение электронной почты php отправляет пустой файл
  • 1Переменная Javascript для json в Python
  • 0Перенаправить одну страницу с HTTPS на HTTP
  • 0ng-chart.js — первый набор данных всегда имеет серый цвет
  • 1Кнопки перестают работать после заполнения табличного представления из базы данных в Javafx
  • 1ошибка pygame: «ImportError: нет модуля с именем« pygame »»
  • 0Изменение цвета фона страницы
  • 0Не уверен, как исключить числовые значения из моего вывода
  • 0MySQL фильтр нулевая сумма
  • 1onActivityResult не вызывается во фрагменте Android [duplicate]
  • 1TypeError в python, который говорит, что объект dict не вызывается
  • 0Удалите + (плюс символ) из URL, используя .htaccess или PHP
  • 1Отображение спящих объектов: Получить VARCHAR как логическое значение
  • 0Добавить префикс случайного числа к загруженному изображению
  • 0Смотреть пользовательские директивы внутри HTML в угловых
  • 0Диалоговое окно JQuery не работает в IE
  • 1Vue.js & Moment.js Выходной объект с отображением даты вместо строки даты
  • 1Что означает L в консоли Chrome?
  • 0jQuery, как использовать on () с оператором if
  • 1Как использовать Java FileChannel для копирования с сохранением временных меток
  • 0проблема с именованием ng-модели, попытка построить массив, но вместо этого получил хеш
  • 0Чтение строк в txt c ++
  • 0symfony2 image add, edit, delete, заголовок текста и изменение порядка изображений
  • 0Добавление CSS с помощью jquery
  • 1Линейные графики Google — линия VAXIS отображается в середине, когда данные не передаются
  • 1формирование букв из двоичных массивов
  • 0Функция $ (window) .scroll не будет выполняться, если я не вызову ее вручную
  • 0Вывод 4 набора из 7 порядковых и уникальных случайных чисел
  • 0JSON декодировать / кодировать повторяющийся массив
  • 0Как удалить существующую область отсечения с холста
  • 0Секционированное матрично-векторное умножение
  • 0Невозможно внедрить AngularJS $ templateCache в метод run
  • 1сравнивая списки равенства 2, полученные в результате запроса структуры сущности, в c #
  • 0Функция удаления символов QString
  • 1Python Plotly Heatmap Datetime показывает только часть
  • 0Могу ли я поставить php ссылку на $ query?
  • 1Добавление различных элементов на основе нажатия кнопки
  • 0Как создать метод литерала объекта, чтобы использовать http get-запрос для получения данных json?
  • 0JQuery удалить li на основе содержимого ascii
  • 1Ошибка приведения с Entity Framework и списками в C #
  • 0Наследование и производный атрибут исчезают в C ++
  • 1Как сделать холст на изображении в андроиде
  • 0Как разобрать многострочный CSV в многомерный ассоциативный массив?
  • 1$ set и позиционный оператор не работает в Java?
  • 0Как я могу получить URL входного файла?
  • 0Как вызвать функцию печати после загрузки страницы?

I am trying to add an Excel sheet named «Temp» at the end of all existing sheets, but this code is not working:

Private Sub CreateSheet()
    Dim ws As Worksheet
    ws.Name = "Tempo"
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub

Can you please let me know why?

ZygD's user avatar

ZygD

21k39 gold badges77 silver badges98 bronze badges

asked Dec 20, 2013 at 6:33

Behseini's user avatar

1

Try this:

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

Or use a With clause to avoid repeatedly calling out your object

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

Above can be further simplified if you don’t need to call out on the same worksheet in the rest of the code.

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

answered Dec 20, 2013 at 6:39

L42's user avatar

L42L42

19.3k11 gold badges43 silver badges68 bronze badges

5

Kindly use this one liner:

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"

answered Jan 3, 2016 at 5:27

Amar's user avatar

AmarAmar

4294 silver badges6 bronze badges

2

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(when you add a worksheet, anyway it’ll be the active sheet)

answered Sep 14, 2015 at 7:56

Saptarshi's user avatar

SaptarshiSaptarshi

1252 silver badges3 bronze badges

Try this:

Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
    On Error GoTo the_dark

    Dim wsSheet As Worksheet
    Dim bFoundWS As Boolean
    bFoundWS = False
    If inNamePrefix <> "" Then
        Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
    End If

    If inBeforeOrAfter = iAfter Then
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
        Else
            Worksheets.Add(After:=wsSheet).Name = inName
        End If
    Else
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(Before:=Worksheets(1)).Name = inName
        Else
            Worksheets.Add(Before:=wsSheet).Name = inName
        End If
    End If

    Set addSheet = findWS(inWB, inName, bFoundWS)         ' just to confirm it exists and gets it handle

    the_light:
    Exit Function
    the_dark:
    MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
    Err.Clear
    GoTo the_light
End Function

JF it's user avatar

JF it

2,4033 gold badges20 silver badges30 bronze badges

answered Oct 7, 2014 at 12:44

Mr F's user avatar

Mr FMr F

511 silver badge1 bronze badge

Try to use:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

If you want to check whether a sheet with the same name already exists, you can create a function:

Function funcCreateList(argCreateList)
    For Each Worksheet In ThisWorkbook.Worksheets
        If argCreateList = Worksheet.Name Then
            Exit Function ' if found - exit function
        End If
    Next Worksheet
    Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function

When the function is created, you can call it from your main Sub, e.g.:

Sub main

    funcCreateList "MySheet"

Exit Sub

answered Mar 23, 2016 at 10:14

Ivan Tokarev's user avatar

Try switching the order of your code. You must create the worksheet first in order to name it.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

thanks,

answered Nov 15, 2016 at 19:04

Developer's user avatar

DeveloperDeveloper

7417 silver badges12 bronze badges

This will give you the option to:

  1. Overwrite or Preserve a tab that has the same name.
  2. Place the sheet at End of all tabs or Next to the current tab.
  3. Select your New sheet or the Active one.

Call CreateWorksheet("New", False, False, False)


Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
  activeSheetNumber = Sheets(ActiveSheet.Name).Index

  If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
    If (preserveOldSheet) Then
      MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
      Exit Sub
    End If
      Application.DisplayAlerts = False
      Worksheets(sheetName).Delete
    End If

    If (isLastSheet) Then
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
    Else 'Place sheet after the active sheet.
      Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
    End If

    If (selectActiveSheet) Then
      Sheets(activeSheetNumber).Activate
    End If

End Sub

answered Oct 17, 2017 at 22:19

moberme's user avatar

mobermemoberme

6597 silver badges13 bronze badges

This is a quick and simple add of a named tab to the current worksheet:

Sheets.Add.Name = "Tempo"

rink.attendant.6's user avatar

answered Oct 22, 2015 at 19:04

Jan's user avatar

JanJan

4113 silver badges9 bronze badges

Содержание

  • Добавить лист
  • Добавить лист с именем
  • Добавить лист до / после другого листа
  • Добавить лист в переменную
  • Дополнительные примеры добавления листов

В этом руководстве будет рассказано, как добавлять / вставлять листы с помощью VBA.

Добавить лист

Этот простой макрос добавит лист перед ActiveSheet:

123 Дополнительное добавление ()Таблицы.ДобавитьКонец подписки

После вставки листа новый лист становится ActiveSheet. Затем вы можете использовать объект ActiveSheet для работы с новым листом (внизу этой статьи мы покажем, как вставить новый лист непосредственно в переменную).

1 ActiveSheet.Name = «NewSheet»

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

Вы также можете определить имя листа при создании нового листа:

1 Sheets.Add.Name = «NewSheet»

Создать новый лист с именем из ячейки

Или используйте значение ячейки, чтобы назвать новый лист:

1 Sheets.Add.Name = диапазон («a3»). Значение

Добавить лист до / после другого листа

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

Вставить лист после другого листа

Этот код вставит новый лист ПОСЛЕ другого листа:

1 Sheets.Add After: = Sheets («Ввод»)

Это вставит новый лист ПОСЛЕ другого листа и укажет имя листа:

1 Sheets.Add (After: = Sheets («Input»)). Name = «NewSheet»

Обратите внимание на дополнительные круглые скобки, необходимые во втором примере (первый пример выдаст ошибку, если добавить вторую круглую скобку).

или до:

1 Sheets.Add (Before: = Sheets («Input»)). Name = «NewSheet»

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

Добавить лист в конец книги

Чтобы добавить лист в конец книги:

1 Sheets.Add After: = Sheets (Sheets.Count)

Добавить лист в начало книги:

Чтобы добавить лист в начало книги:

1 Sheets.Add (Before: = Sheets (1)). Name = «FirstSheet»

Добавить лист в переменную

Этот код назначает новый лист переменной при создании листа:

12 Dim ws как рабочий листУстановить ws = Sheets.Add

Отсюда вы можете ссылаться на новый лист с помощью переменной «ws»:

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

Создать лист, если его еще нет

Вы можете создать лист, только если он еще не существует.

Создать рабочие листы из списка имен

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

1234567891011121314151617181920212223242526 Частная подпрограмма CommandButton1_Click ()Вызов CreateWorksheets (Sheets («Sheet2»). Range («A1: a10»))Конец подпискиSub CreateWorksheets (Names_Of_Sheets As Range)Dim No_Of_Sheets_to_be_Added As IntegerТусклое имя листа как строкаDim i как целое числоNo_Of_Sheets_to_be_Added = Names_Of_Sheets.Rows.CountДля i = 1 в No_Of_Sheets_to_be_AddedSheet_Name = Names_Of_Sheets.Cells (i, 1) .Value’Добавляйте лист только в том случае, если его еще нет и имя длиннее нуля символовЕсли (Sheet_Exists (Sheet_Name) = False) And (Sheet_Name «»), тоWorksheets.Add (). Name = Sheet_NameКонец, еслиДалее яКонец подписки
1234567891011121314 Функция Sheet_Exists (WorkSheet_Name As String) как логическое значениеТусклый рабочий лист как рабочий листSheet_Exists = ЛожьДля каждой рабочей_таблицы в ThisWorkbook.WorksheetsЕсли Work_sheet.Name = WorkSheet_Name, тоSheet_Exists = ИстинаКонец, еслиСледующийКонечная функция

Итак, если у нас есть следующий текст в ячейках A1: A30 на листе 2:

Тогда будут созданы следующие листы:

Обратите внимание, что хотя «Собака» появляется дважды, создается только один лист.

Чтобы загрузить файл .XLS для этого руководства, щелкните здесь.

Вы поможете развитию сайта, поделившись страницей с друзьями

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

Автоматическое добавление нового листа с определенным именем в текущую книгу с кодом VBA
Автоматическое добавление нового листа с определенным именем в новую книгу с помощью Kutools for Excel


Автоматическое добавление нового листа с определенным именем в текущую книгу с кодом VBA

Вы можете добавить новый лист с определенным именем в конец текущей книги со следующим кодом VBA.

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули.

3. Скопируйте и вставьте ниже код VBA в Модули окно.

Код VBA: добавить новый лист с определенным именем в конец текущей книги

Sub CreateSheet()
'Updated by ExtendOffice 20181009
    Dim xName As String
    Dim xSht As Object
    On Error Resume Next
    xName = InputBox("Please enter a name for this new sheet ", "Kutools for Excel")
    If xName = "" Then Exit Sub
        Set xSht = Sheets(xName)
        If Not xSht Is Nothing Then
            MsgBox "Sheet cannot be created as there is already a worksheet with the same name in this workbook"
            Exit Sub
            End If
            Sheets.Add(, Sheets(Sheets.count)).Name = xName
        End Sub

4. Нажмите F5 ключ для запуска кода. В всплывающем Kutools for Excel диалоговом окне введите имя для этого листа, а затем щелкните OK кнопка. Смотрите скриншот:

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


Автоматическое добавление нового листа с определенным именем в новую книгу с помощью Kutools for Excel

В этом разделе мы представим Создать рабочие листы последовательностей полезности Kutools for Excel. С помощью этой утилиты вы можете легко добавить новый лист с определенным именем в новую книгу.

1. Для добавления нового листа с определенным именем вам необходимо заранее ввести это имя в ячейку. А затем нажмите Кутулс Плюс > Рабочий лист > Создать рабочие листы последовательностей.

2. в Создать рабочие листы последовательностей диалоговое окно, выберите Пустой рабочий лист в Базовый рабочий лист выпадающий список, выберите Данныев диапазоне вариант и укажите ячейку, содержащую определенное имя рабочего листа, и, наконец, щелкните OK кнопка. Смотрите скриншот:

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

Заметки:

1. Если вы хотите создать несколько новых листов с определенными именами одновременно, введите эти имена в ячейки одну за другой, а затем выберите эти ячейки в Данные в диапазоне пунктом.

2. Вы также можете создавать рабочие листы последовательностей из номеров серий или настраиваемого списка с помощью этого Создать рабочие листы последовательностей утилита. Смотрите скриншот:

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Vba excel добавить значение в массив
  • Vba excel добавит свою функцию
  • Vba excel дни недели
  • Vba excel для чего используется
  • Vba excel для чайников в примерах