VBA excel代码复制表错误

我想要一台复印机多次复印一张。 所以我已经为第一周做了一个星期的计划。现在我想要这张表51多次。 所以这个名字必须以2开头,并以52结尾。为了使这个工作对x我y做了下面的代码:

Sub Copier() Dim a As Integer Dim b As Integer a = InputBox("Enter begin number for making copy's") b = InputBox("Enter end number for making copy's") For x = a To b 'Loop to make x number copies. ActiveWorkbook.ActiveSheet.Copy _ Before:=ActiveWorkbook.Sheets("x") 'The name of every copied sheet is a number. Next End Sub 

当我执行这个时,会出现一个错误:“执行过程中出现错误9,下标超出范围”。 (我翻译了,因为我有荷兰的Excel。)

我没有看到什么是错的,因为这个代码是从微软页面复制的。 有没有人有一个想法?

 Before:=ActiveWorkbook.Sheets("x") 

这是寻找名为“x”的工作表。 您可能已经有了Sheets(x) ,它通过其索引号来引用工作表。 但是,这不会命名工作表 – 你还没有这个代码。

replaceBefore:=ActiveWorkbook.Sheets("x")Before:=ActiveWorkbook.Sheets(CStr(x))

Sheets("x")查找名为“x”的表单

Sheets(x) ,如果x不是stringtypes,则查找索引为x的表格

Sheets(CStr(x))确保您查找名为x的工作表。

在你的代码中,你使用了一个string“x”。 如果你想用x作为索引,你需要使用它而不用引号。

编辑

使用x作为图表索引:

 ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(x) 

使用工作表的名称来获取其索引:

 ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets("Sheet1").Index) 

使用张数作为索引:

 ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets.Count) 

如果您在复制后尝试更改工作表的名称,则需要添加这样的代码。

例:

 ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets.Count) ActiveSheet.Name = x 

我想完成的是这样的:

 Sub Copier() Dim a As Integer Dim b As Integer Dim c As String c = InputBox("Name of Sheet") a = InputBox("Enter begin number for making copy's") b = InputBox("Enter end number for making copy's") For x = a To b 'Loop to make x number copies. ActiveWorkbook.ActiveSheet.Copy _ Before:=ActiveWorkbook.Sheets(c) Next End Sub 

我现在还想要的唯一的事情就是复制的表格的名字变成了x。

这个macros将复制工作表“1”到工作表“2”任何….

 Option Explicit Sub MakeExtraWeeks() Dim q As Long Dim i As Long q = InputBox("How Many extra weeks?") For i = 2 To q Worksheets("1").Copy After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = CStr(i) Next i End Sub 

我复制After:=最后一张表,所以我知道确切的地方find工作表,所以我可以在下一行重命名(记住工作表的数量将增加1,所以.Name将重命名最后工作表)