在此Excel VBA中,有什么机构可以告诉我为什么它拒绝在工作表对象的add方法中接受参数吗?

时间:2020-08-15 02:01:13

标签: excel vba

代码是:

Sub Copy_Filtered_Table()
    Dim aSheet As Worksheet
    Dim i As Long
    i = ActiveSheet.Index
    ActiveSheet.AutoFilter.Range.Copy
->  Set aSheet = ActiveWorkbook.Worksheets.Add(After:=i)
    aSheet.Range("A1").PasteSpecial
End Sub

工作簿格式为.xlsm Excel 2016 在活动工作表之前和之后都有工作表

我也尝试过使用aSheet变量来做到这一点

      ActiveWorkbook.Worksheets.Add After:=i

它也不起作用。两种情况都给出错误1004。对象“表”的方法“添加”失败。 如果我省略了After参数,它将起作用,但是将结果新的工作表放在活动工作表之前,而这正是我所避免的。

1 个答案:

答案 0 :(得分:2)

要相对于现有图纸插入,您需要使用以下其中一种方法提供实际的 sheet 而不是其索引:

Set aSheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(i))
ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Worksheets(i)

您选择哪种选择取决于您是否要立即对工作表执行某项操作而不再次搜索它,但考虑到您的问题,我怀疑您已经知道这一点。


顺便说一句(尽管我还没有尝试过),我怀疑获取当前工作表的索引,然后再将其转回当前工作表对象是没有必要的。您可能只想尝试:

Set aSheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.ActiveSheet)