Как добавить несколько рабочих листов и назвать их ссылками на ячейки? - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю макрос в своей книге PERSONAL.xlsb, чтобы его можно было использовать во всех моих книгах.

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

Я застрял в той части, где я хочу добавить несколько листов в свою рабочую книгу.

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

Что мне нужно сделать, чтобы добавить листы в мою книгу?

'Попытка 1: не работает - ошибка времени выполнения 1004 ActiveWorkbook.Sheets.Add After: = "Sheet23 "

'Попытка 2: не работает - ошибка времени выполнения 1004 Sheets.Add After: =" Sheet23 "

' Попытка 3: не работает - ошибка времени выполнения1004 Sheets.Add After: = Sheet23

'Попытка 4: не работает - ошибка времени выполнения 1004 Worksheets.Add after: = Sheet23

Желаемый вывод (основной): Я хочудобавить новый лист после листа 23 в мою книгу

Желаемый результат (идеально): я хочу добавить количество листов после листа 23 в соответствии с количеством записей, которые есть в моем списке.Каждый элемент в списке нумеруется с 1 года.Каждый новый лист должен быть назван в соответствии с этим номером.

1 Ответ

0 голосов
/ 01 апреля 2019

Аргумент after хочет, чтобы объект листа не был строкой, поэтому вам нужно

 ActiveWorkbook.Worksheets.add after:=ActiveWorkbook.Worksheets("Sheet23")

Но вы также можете использовать индексный номер, чтобы

 Dim i as integer
 i = ActiveWorkbook.Worksheets("Sheet23").Index
 ActiveWorkbook.Worksheets.Add after:= ActiveWorkbook.Worksheets(i)

Если мы предположим, что ваш список находится в (для аргументации) sheet1.range ("a1") вниз, то мы могли бы написать

  Sub MakeSheetsFromList()
  Dim r As Range
  Set r = Worksheets("sheet1").Range("a1")
  Dim i As Integer
  i = Worksheets("sheet23").Index
  Dim ws As Worksheet
  Do
    Set ws = Worksheets.Add(after:=Worksheets(i))
    ws.Name = r.Text
    Set r = r.Offset(1, 0)
    i = i + 1
 Loop Until r = ""
 End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...