2015-11-20 62 views
0

我被要求爲PivotTable製作宏代碼。我已經完成了它,但是有一些錯誤我不知道在調用該函數AgingFur後無法執行。樞軸也沒有按我的預期顯示。數據透視表沒有按預期的那樣出現

下面是我得到的數據透視表(Pivot Table A):

enter image description here

同時這是一個我應該得到(Pivot Table B),其中手動生成:

enter image description here

這裏是我用來製作的代碼Pivot Table A

Sub AgingFur() 
    Sheets("B_Original COpy").Activate 
    Dim objTable As PivotTable, objField As PivotField, ws As Worksheet 
    ActiveWorkbook.Sheets("B_Original COpy").Range("A1").Select 

    Set ws = Sheets.Add 
    ws.Name = "X_Aging ST Inc" 

    Set objTable = Sheets("B_Original COpy").PivotTableWizard(TableDestination:=ws.Cells(1, "A")) 
    objTable.PivotCache.MissingItemsLimit = xlmissingItemNone 
    objTable.PivotCache.Refresh 

    Set objField = objTable.PivotFields("Status") 
    objField.Orientation = xlPageField 
    objField.Position = 1 
    objField.PivotItems("Cancelled").Visible = False 

    Set objField = objTable.PivotFields("Month Opened") 
    objField.Orientation = xlRowField 

    Set objField = objTable.PivotFields("Age") 
    objField.Orientation = xlDataField 
    objField.Function = xlAverage 
    objField.NumberFormat = "* #,##0.00" 

    Set objField = objTable.PivotFields("Age FL") 
    objField.Orientation = xlDataField 
    objField.Function = xlAverage 
    objField.NumberFormat = "* #,##0.00" 

    With objTable.DataPivotField 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
End Sub 

我需要出現樞軸爲Pivot Table B並需要解決我不知道它在哪裏的錯誤。請忽略顯示的值。

我該如何解決這個問題?

代碼函數AgingFur之前是

Call KPIDashboardSheet '<~ This one is Pivot 
Call KPISecond   '<~ This one is Pivot 
Call FactorizeData  '<~ This one is Pivot 
Call AgingFur    '<~ The problem Pivot 
Call SortWorksheets  '<~ This one for sort all sheets based on name 

這是 'FactorizeData' 代碼:

Private Sub FactorizeData() 
Sheets("FactorizeData List").Activate 
ActiveSheet.Range("A:AM").Copy 
Sheets.Add.Name = "FactorizeData" 
Sheets("FactorizeData List").Activate 
Range("A:AM").Select 
ActiveSheet.Paste 
Application.CutCopyMode = False 

Call FactorizeDataTables 
End Sub 

Private Sub FactorizeDataTables() 
Sheets("FactorizeData List").Activate 
Dim objTable As PivotTable, objField As PivotField, ws As Worksheet 
ActiveWorkbook.Sheets("FactorizeData List").Range("A1").Select 

Set ws = Sheets.Add 
ws.Name = "FactorizeData Table" 

Set objTable = Sheets("FactorizeData List").PivotTableWizard(TableDestination:=ws.Cells(3, "A")) 
objTable.PivotCache.MissingItemsLimit = xlmissingItemNone 
objTable.PivotCache.Refresh 

Set objField = objTable.PivotFields("Priority") 
objField.Orientation = xlColumnField 

Set objField = objTable.PivotFields("Status") 
objField.Orientation = xlColumnField 

Set objField = objTable.PivotFields("Type") 
objField.Orientation = xlColumnField 

Set objField = objTable.PivotFields("Date") 
objField.Orientation = xlRowField 

Set objField = objTable.PivotFields("Type") 
objField.Orientation = xlDataField 

Dim pf As PivotField 
Set pf = ActiveSheet.PivotTables(1).PivotFields("Date") 
pf.DataRange.Cells(1).Group Start:=True, End:=True, Periods:=Array(False, False, _ 
False, False, True, False, True) 
End Sub 

這是SortWorksheet:

Private Sub SortWorksheets() 

Dim N As Integer 
Dim M As Integer 
Dim FirstWSToSort As Integer 
Dim LastWSToSort As Integer 
Dim SortDescending As Boolean 

SortDescending = False 

If ActiveWindow.SelectedSheets.Count = 1 Then 

    FirstWSToSort = 1 
    LastWSToSort = Worksheets.Count 
Else 
    With ActiveWindow.SelectedSheets 
     For N = 2 To .Count 
      If .Item(N - 1).Index <> .Item(N).Index - 1 Then 
       Exit Sub 
      End If 
     Next N 
     FirstWSToSort = .Item(1).Index 
     LastWSToSort = .Item(.Count).Index 
    End With 
End If 

For M = FirstWSToSort To LastWSToSort 
    For N = M To LastWSToSort 
     If SortDescending = True Then 
      If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then 
       Worksheets(N).Move Before:=Worksheets(M) 
      End If 
     Else 
      If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name) Then 
       Worksheets(N).Move Before:=Worksheets(M) 
      End If 
     End If 
    Next N 
Next M 

End Sub 
+0

如果我們忽略的數字你有什麼問題之前,這是經典的風格? – pnuts

+0

顯示的值是因爲它們來自不同的數據源。你是什​​麼意思'經典'風格? @pnuts – IlhamideaZ

+0

我的意思是[this](http://superuser.com/questions/486539/excel-2007-the-empty-look-of-a-pivot-table/486540#486540),但我看到我的Excel 2013的選項對外觀沒有什麼影響:) – pnuts

回答

0

添加此行進AgingFur過程

objTable.RowAxisLayout xlTabularRow 

此行

objTable.PivotCache.Refresh 
相關問題