Excel复印表单在活动工作表之后

我想复制工作表使用VBA作为一个新的工作表复制后的工作表

我现在正在使用这个代码,它工作,但把复制的工作表放在工作表的末尾

Dim x As Integer x = InputBox("Enter number of times to copy sheet, puts copies at end of sheet list") For numtimes = 1 To x 'Loop by using x as the index number to make x number copies. ActiveWorkbook.ActiveSheet.Copy _ After:=Sheets(Sheets.Count) Next 

可以说,工作表的清单是 – 工作表(1),工作表(2),工作表(3),工作表(4),如果我运行工作表(2)上的代码我想新的副本之间工作表(2)和Sheet(3),这是否可以通过?

此外,如果我取消popup框,要求纸张副本的数量它得到错误是有办法,以防止发生?

你可以使用activesheet的索引: After:=Sheets(Activesheet.Index)

不知道你是否知道很多的VBA,但正如其名称所暗示的,无论你当前的活动表是什么,该索引将被使用。 不知道更多的代码,它将适用于您在此处询问的特定实例。 但如果你有多个工作表(你这样做),你可能会想为你正在工作的工作表设置一个variables,然后在Sheets()部分使用它…即

 Sub t() Dim x As Integer Dim myWorksheet As Worksheet myWorksheet = Sheets("Data Sheet") x = InputBox("Enter number of times to copy sheet, puts copies at end of sheet list") For numtimes = 1 To x 'Loop by using x as the index number to make x number copies. myWorksheet.Copy _ After:=Sheets(myWorksheet.Index) Next End Sub 

现在,这只是使用一个工作表。 你需要添加一些逻辑来循环遍历所有的内容,但是对于你来说不应该太难。 如果您想要更多的帮助,请告诉我。

此外,如果我取消popup框,要求纸张副本的数量它得到错误是有办法,以防止发生?

xtypes更改为Variant。 如果您在input框上单击取消,返回空string,这是不适合Integer