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
将重命名最后工作表)