2017-10-05 55 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的對象。 –