0
我有一個存在於空工作簿中的宏。 每天都會粘貼數據,然後宏將運行。 宏的一部分是它更新數據透視表中的數據源並刷新。當我粘貼數據並運行宏時,它會拋出空白列標題的錯誤消息。動態元素似乎沒有正常工作。VBA在Pivot表中的動態數據範圍
Function PivotTable()
Dim Data_sht As Worksheet
Dim Pivot_sht As Worksheet
Dim StartPoint As range
Dim DataRange As range
Dim PivotName As String
Dim NewRange As String
'Set Variables Equal to Data Sheet and Pivot Sheet
Set Data_sht = ThisWorkbook.Worksheets("Sheet1")
Set Pivot_sht = ThisWorkbook.Worksheets("Pivot Table")
'Enter in Pivot Table Name
PivotName = "PivotTable"
'Dynamically Retrieve Range Address of Data
Set StartPoint = Data_sht.range("A1")
Set DataRange = Data_sht.range(StartPoint, StartPoint.SpecialCells(xlLastCell))
NewRange = Data_sht.Name & "!" & _
DataRange.Address(ReferenceStyle:=xlR1C1)
'Make sure every column in data set has a heading and is not blank (error prevention)
If WorksheetFunction.CountBlank(DataRange.Rows(1)) > 0 Then
MsgBox "One of your data columns has a blank heading." & vbNewLine _
& "Please fix and re-run!.", vbCritical, "Column Heading Missing!"
End If
'Change Pivot Table Data Source Range Address
Pivot_sht.PivotTables(PivotName).ChangePivotCache _
ThisWorkbook.PivotCaches.Create(_
SourceType:=xlDatabase, _
SourceData:=NewRange)
'Ensure Pivot Table is Refreshed
Pivot_sht.PivotTables(PivotName).RefreshTable
End Function
如果子句被觸發,那麼'CountBlank'檢查應該有'End',因爲我猜如果有空白列標題,你不想執行其餘的代碼。你是否完成了'Debug.Print'來確保'DataRange'和'NewRange'字符串被正確設置? – kschindl
它在我看來,當我運行它最初的作品。但是,當我粘貼新數據時,ranee無法正確更新。列的數量已經減少,但它仍然選擇現在空白的列 –