活动工作表后的Excel复印表

时间:2016-01-27 19:42:58

标签: excel vba excel-vba

我想要在复制的工作表之后使用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) 如果我在Sheet(2)上运行代码,我希望新副本位于Sheet(2)和Sheet(3)之间,这是否可以通过?

此外,如果我取消弹出框询问其错误的工作表副本数量是否有办法防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

  

此外,如果我取消弹出框询问其错误的工作表副本数量是否有办法防止这种情况发生?

x的类型更改为Variant。如果单击“输入”框上的“取消”,则返回空字符串,该字符串不适用于Integer

答案 1 :(得分:0)

您可以使用活动表的索引:After:=Sheets(Activesheet.Index)

不确定您是否了解更多VBA,但顾名思义,无论您当前有效的工作表是什么,都将使用该索引。在不了解更多代码的情况下,它将适用于您在此处询问的特定实例。但是如果你有多个工作表(你这样做),你可能会想要为你正在使用的工作表设置一个变量,然后在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

现在,这只使用一个工作表。你需要添加一些逻辑来循环遍历所有,但这对你来说应该不会太难找到怎么做。如果您需要更多帮助,请告诉我。