录制的宏给出运行时错误5

时间:2013-09-20 10:06:19

标签: excel vba excel-vba excel-2010

我是VBA的新手。 我录制了一个想要编辑它的宏。记录后,我想运行一次。但是当我这样做时,它返回了运行时错误5。

宏应从片材中取出并将其添加到另一张纸中的枢轴表中。

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先:源表和Tabelle2工作表是否存在?

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

ActiveWorkbook.PivotCaches.Create(xlDatabase, "sourcetable!R1C1:R1048576C21") _
    .CreatePivotTable ActiveWorkbook.Worksheets("Tabelle2").Range("R3C1")