运行时错误1004

我已经运行了一个新的VBA问题:只有当问题表是活动的时候,才会执行一些代码行,否则会产生一个错误(运行时错误'1004':应用程序定义错误或对象定义错误)。我需要的代码才能够在后台运行。

也许有人用一双新鲜的(VBA精明的)眼睛可以发现线条有什么问题。 (我把它们放在一起,但实际上来自不同的macros。)

Dim senaste As Range Sheets("PA").Range(Cells(senaste.Row, (senaste.Column - 2)), Cells(senaste.Row, senaste.Column)).Copy Worksheets("GL").Range(Cells(3, 1), Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete 

编辑:下面的好回答! 同一个不同的线和坐标疯了,发生了什么? (-4和-9曾经是-1。)

 Set pt = Worksheets("PA").PivotTables("A") pt.DataBodyRange.Range(pt.DataBodyRange.Cells(-4, (pt.DataBodyRange.Cells.Columns.Count - 9)), pt.DataBodyRange.Cells((pt.DataBodyRange.Cells.Rows.Count - 6), (pt.DataBodyRange.Cells.Columns.Count - 7))).Copy 

您没有正确地限定所有范围 – 您需要限定所有范围和单元格调用,以便它们指定相同的表格:

 Dim senaste As Range Sheets("PA").Range(Sheets("PA").Cells(senaste.Row, (senaste.Column - 2)), Sheets("PA").Cells(senaste.Row, senaste.Column)).Copy Worksheets("GL").Range(Worksheets("GL").Cells(3, 1), Worksheets("GL").Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete 

或者你可以使用With块清理:

 Dim senaste As Range With Sheets("PA") .Range(.Cells(senaste.Row, (senaste.Column - 2)), .Cells(senaste.Row, senaste.Column)).Copy End With 

和类似的:

 With Worksheets("GL") .Range(.Cells(3, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Delete End With 

注意所有.Range.Cells调用之前的点。

对于你更新的部分,你需要这个:

 Set pt = Worksheets("PA").PivotTables("A") With pt.DataBodyRange pt.Parent.Range(.Cells(1, .Columns.Count - 3), .Cells(.Rows.Count - 1, .Columns.Count - 1)).Select End With 

请注意,第一个Range调用需要使用工作表进行限定,而不是DataBodyRange,否则您将从所需位置获得范围偏移量。