如何添加多个工作表并使用单元格引用命名它们?

时间:2019-04-01 10:30:59

标签: excel vba add

我正在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 工作表。在以下位置添加:= Sheet23

所需的输出(基本):我想在工作簿中的工作表23之后添加一个新工作表

所需的输出(理想):我想根据我在列表中拥有的条目数在工作表23之后添加许多工作表。列表中的每个项目均从1开始编号。每个新工作表都应根据该数字命名。

1 个答案:

答案 0 :(得分:0)

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