1

我是 VBA 新手。我录制了一个宏并想对其进行编辑。录完之后,就想跑一次。但是当我这样做时,它返回了运行时错误 5。

宏应该从一个工作表中获取并添加到另一个工作表中的数据透视表中。

所以这是错误所在的代码。

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _
    CreatePivotTable TableDestination:="Tabelle2!R3C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14

感谢您的帮助

4

2 回答 2

1

不,它不是仅针对此支点的新工作表@SiddharthRout – 初学者 4 分钟前

最简单的方法是

With ActiveWorkbook
    .Sheets("Tabelle2").Cells.Clear

    .PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _
    CreatePivotTable TableDestination:="Tabelle2!R3C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14
End With

我还注意到您的源数据定义到第 1048576 行。为什么会这样?更完美的方法是找到最后一行,然后构建你的范围。例如

Sub Sample()
    Dim lRow As Long

    With ActiveWorkbook
        '~~> Find last row in sheet sourcetable
        With .Sheets("sourcetable")
            If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
                lRow = .Cells.Find(What:="*", _
                              After:=.Range("A1"), _
                              Lookat:=xlPart, _
                              LookIn:=xlFormulas, _
                              SearchOrder:=xlByRows, _
                              SearchDirection:=xlPrevious, _
                              MatchCase:=False).Row
            Else
                lRow = 1
            End If
        End With

        .Sheets("Tabelle2").Cells.Clear

        .PivotCaches.Create(SourceType:=xlDatabase, _
                            SourceData:="sourcetable!R1C1:R" & _
                                                        lRow & _
                                                        "C21", _
                            Version:=xlPivotTableVersion14).CreatePivotTable _
                            TableDestination:="Tabelle2!R3C1", _
                            TableName:="PivotTable1", _
                            DefaultVersion:=xlPivotTableVersion14
    End With
End Sub
于 2013-09-20T10:17:09.060 回答
0

第一:sourcetable 和 Tabelle2 工作表是否存在?

然后,尝试删除所有可选的无意义参数:

ActiveWorkbook.PivotCaches.Create(xlDatabase, "sourcetable!R1C1:R1048576C21") _
    .CreatePivotTable ActiveWorkbook.Worksheets("Tabelle2").Range("R3C1")
于 2013-09-20T10:13:49.170 回答