2013-03-16 111 views
0

我試圖能夠使用這個宏在同一個工作表名稱上每天創建這個數據透視表。唯一會改變的是數據源行,因爲我永遠不知道它會有多少行。我試圖將整個字符串設置爲CurSourceData變量,然後使用它,但失敗並說無效的參數。通過VBA的樞軸表

任何想法都會有所幫助。

Sheets("Cases 23+ Day (Due Today)").Select 
Range("A1").Select 
Selection.End(xlDown).Select 
    Selection.End(xlDown).Select 
CurRow = ActiveCell.Row 
CurSourceData = "Cases 23+ Day (Due today)!R1C2:R" & CurRow & "C20" 
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    CurSourceData, Version:=xlPivotTableVersion14). _ 
    CreatePivotTable TableDestination:="Master Summary!R3C7", TableName:= _ 
    "PivotTable3", DefaultVersion:=xlPivotTableVersion14 
Sheets("Master Summary").Select 
Cells(3, 7).Select 
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
    "PivotTable3").PivotFields("Status"), "Count of Status", xlCount 
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Status") 
    .Orientation = xlRowField 
    .Position = 1 
End With 

回答

1

PivotCaches.Create的SourceData參數是Range或Connection。我認爲你的工作表名稱中的空間也有問題,答案是使用單引號。嘗試:

Set CurSourceData = Worksheets("Cases 23+ Day (Due today)").Range("B1", "T" & CurRow)

(我討厭R1C1符號,無法工作,如何在這裏使用它。)

+0

我很感激答覆。我曾嘗試改變這一點,但這並沒有幫助。任何其他想法?另外,如果我真的根據需要使用了正確的正確信息,那麼在選擇主要摘要時也會出錯? – MBlackburn 2013-03-19 19:28:45

+0

@ user1243498答案已更新 – grahamj42 2013-03-19 20:07:56

0

這爲我工作,假設你的數據在A1單元格設置開始:

Dim MyRange As Range 

Dim lrow As Long 

Dim lcol As Long 

lrow = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row 

lcol = ActiveSheet.Cells(1, Application.Columns.Count).End(xlToLeft).Column 

Set MyRange = ActiveSheet.Cells(1, 1).Resize(lrow, lcol) 

祝你好運!