我希望复印机多次复印一张纸。所以我已经计划了第一周的一周计划。 而现在我想要这张51更多次。因此,名称必须从2开始,以52结束。为了使这适用于x我做了以下代码:
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
执行此操作时,会出现错误:“执行期间出错。下标超出范围。” (我翻译它是因为我有荷兰语Excel。)
我看不出有什么问题,因为此代码是从Microsoft页面复制的。 有人有想法吗?
答案 0 :(得分:2)
Before:=ActiveWorkbook.Sheets("x")
这是寻找名为“x”的工作表。您可能打算Sheets(x)
,它的索引号是指工作表。但是,这不会命名工作表 - 您还没有此代码。
答案 1 :(得分:2)
将Before:=ActiveWorkbook.Sheets("x")
替换为Before:=ActiveWorkbook.Sheets(CStr(x))
Sheets("x")
可以查找名为“x”的表格
Sheets(x)
,如果x不是字符串类型,则应查找索引为x
Sheets(CStr(x))
,确保您查找名为x的工作表。
答案 2 :(得分:1)
在您的代码中,您使用的是“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
答案 3 :(得分:0)
我想要完成的是:
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。
答案 4 :(得分:0)
这个宏将表单“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:=
最终的工作表,所以我确切知道在哪里找到工作表,所以我可以在下一行重命名它(请记住,工作表的数量会增加1,所以{{ 1}}将重命名最终的工作表)