用于复制图纸的VBA excel代码错误
我想要一台复印机把一张纸复印多次。所以我为第一周做了一周的计划。 现在我想要这张纸51次。因此,名称必须以2开头,以52结尾。为了使x到y都能工作,我编写了以下代码:用于复制图纸的VBA excel代码错误,vba,excel,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")
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。)
我看不出有什么问题,因为此代码是从Microsoft页面复制的。
有人有想法吗?在代码中,您使用了字符串“x”。如果要使用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
这是在查找名为“x”的工作表。您可能打算使用
工作表(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。此宏将工作表“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
我在:=之后复制最后一张工作表,这样我就知道在哪里可以找到工作表,这样我就可以在下一行对它进行重命名(请记住,工作表的数量将增加1,因此,
.Name
将重命名最后一张工作表)将之前的:=ActiveWorkbook.sheets(“x”)
替换为之前的:=ActiveWorkbook.sheets(CStr(x))
Sheets(“x”)
whoull查找名为“x”的工作表
工作表(x)
,如果x不是字符串类型,则可以查找索引为x的工作表
Sheets(CStr(x))
,确保您查找名为x的工作表。谢谢,我不明白他们指的是他们要复制的工作表的名称。您知道如何获取工作表的索引,并将其作为输入名称吗?Ripster这不起作用。因为Sheets(x)如Andy G所说,引用工作表的索引。这些索引必须是我要复制的工作表的索引。我以前考虑过更多:=ActiveWorkbook.Sheets(1)ActiveSheet.Name=“x”但是thsi不起作用你想做什么还不清楚。Andy G和我说了完全相同的话。我会更新我的代码,尝试解释我认为你在问什么,但我还是不清楚。
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