2017-10-05 56 views
1

我想检查3张数据透视表的资源数据是否为空的表单,如果是,则应该清除另一个表单中的数据透视表内容而不删除数据透视表。现在我的问题是,数据透视表也在更新之后提交最后一个值并且不清除它们自己。我总是得到一个方法不匹配的错误。这里是我的代码:如果资源数据为空,则清除数据透视表

Dim pt As PivotTable 
Dim myCellRange As Range 
Set myCellRange = ThisWorkbook.Sheets("Data").Range("A1:A500") 

If ThisWorkbook.Sheets("Data").CountA(myCellRange) = 0 Then 
    Set pt = ThisWorkbook.Sheets("Analysis").PivotTables(1) 
    pt.ClearTable 
End If 

任何想法是什么错?

回答

1

请checkthe如下:

Option Explicit 

Sub clearPivot() 

Dim pt As PivotTable 
Dim lastrow As Long 




lastrow = ThisWorkbook.Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row 


     If lastrow = 1 Then 



     Set pt = ThisWorkbook.Sheets("Analysis").PivotTables(1) 

      pt.ClearTable 

     End If 

End Sub 

enter image description here

enter image description here

+0

它说索引超出范围 – Vedad

+0

我编辑了代码,请再次检查 –

+0

Erorr 400运行时从表单运行按钮,错误1004运行时从VBA环境 – Vedad

0

试试这个。要在VBA代码中使用工作表函数,您需要从application.WorksheetFunction对象中解决它们。

Dim pt As PivotTable 
Dim myCellRange As Range 
Set myCellRange = ThisWorkbook.Sheets("Data").Range("A1:A500") 

If Application.WorksheetFunction.CountA(myCellRange) = 0 Then 
    Set pt = ThisWorkbook.Sheets("Analysis").PivotTables(1) 
    pt.ClearTable 
End If 
+0

同为一上来,它说,该指数超出范围 – Vedad

+0

一旦你清楚你的数据透视表,它会占用更多的列空间,所以如果您的数据透视表只有一列宽度,当您清除它时,它将占用3列空间。确保您在数据透视表旁边的列中没有任何合并的单元格,或任何其他无法清除PT的对象。 –