TableDestination:=“ Sheet2!R1C1”

时间:2018-08-26 01:54:42

标签: excel vba excel-vba

Sub Macro1()

    Sheet2.Select
    ActiveWindow.SmallScroll Down:=-69
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Dim Endrow&
    Endrow = Sheet3.Range("H1").End(xlDown).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Sheet3.Name & "!R1C8:R" & Endrow & "C21", Version:=6).CreatePivotTable _
        **TableDestination:=Sheets("Sheet2").Cells(1, 1)**, TableName:= _
        "PivotTable1", DefaultVersion:=6

我试图将此数据透视表宏插入到Sheet2!R1C1(这是一个现有工作表)中,而不是创建一个新工作表。但是,我收到运行时错误

  

5:无效的过程调用或参数。

我试图遵循以下方法

TableDestination:=Sheets("Sheet2").Cells(1, 1)
TableDestination:="Sheet2!R1C1"
TableDestination:=Sheet2.name & "!R1C1"

,但全部失败。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您的代码在假定存在工作表为Sheet2和Sheet3的代码名称(不是名称!)的情况下工作。可能是您指的是工作表的对象名称可能已更改吗?如果您有Sheet2和Sheet3

,则可以使用...
Sub Macro1()
    Sheet2.Select
    ActiveWindow.SmallScroll Down:=-69
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
    Dim Endrow&
    Endrow = Sheet3.Range("H1").End(xlDown).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Sheet3.Name & "!R1C8:R" & Endrow & "C21", Version:=6).CreatePivotTable _
        TableDestination:=Sheets("Sheet2").Cells(1, 1), TableName:= _
        "PivotTable1", DefaultVersion:=6
End Sub

也许当您引用Sheet2和Sheet3时,检查它们是否仍然存在。

Public Sub ListSheetNames()
    Dim vSheet As Worksheet
    For Each vSheet In Worksheets
        Debug.Print "Code Name/Sheet Name: " & vSheet.CodeName & "  / " & vSheet.Name
    Next
End Sub

也许将Sheet2的引用更改为以下内容……对于Sheet3也是如此

sheets("Sheet2")