2013-09-26 69 views
0

這是一個宏觀的開始,成功地創建一個基於從指定的表細胞透視表:Excel的VBA:從表名稱列表製作透視表

aray = Array("'Sheet1'!R1C5:R102C10", "'Sheet2'!R1C5:R102C10", "'Sheet3'!R1C5:R102C10", "'Sheet4'!R1C5:R102C10") 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= aray, _ 
    Version:= _ 
    xlPivotTableVersion15).CreatePivotTable TableDestination:= _ 
    "'[Filename.xlsm]sheet5'!R1C1", TableName:= _ 
    "RatingSumPiv", DefaultVersion:=xlPivotTableVersion15 

我的問題是,我不知道牀單的名稱或有多少。他們的名字將在一個名爲「UnitNumbers」的範圍內(一個ListObject)。

如何自動將圖紙名稱加載到數組中?

回答

1
Sub Sample() 
Dim loSheetNames As ListObject 
Dim rngCurrentSheetName As Range 
Dim toprowoflo As Long 
Dim lngCurrentIndex As Long 

Set loSheetNames = ActiveWorkbook.Worksheets("Sheet1").ListObjects("listob1") 
toprowoflo = loSheetNames.Range.Row 
ReDim aray(loSheetNames.Rows.Count) 

For Each rngCurrentSheetName In loSheetNames.Range 
    lngCurrentIndex = rngCurrentSheetName.Row - toprowoflo + 1 
    aray(lngCurrentIndex) = rngCurrentSheetName & "!R1C5:R102C10" 
Next rngCurrentSheetName 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:=aray, _ 
    Version:= _ 
    xlPivotTableVersion15).CreatePivotTable TableDestination:= _ 
    "'[Filename.xlsm]sheet5'!R1C1", TableName:= _ 
    "RatingSumPiv", DefaultVersion:=xlPivotTableVersion15 

End Sub 
+0

感謝您的快速響應。 'toprowoflo = itemslist.Range.Row'給了我一個錯誤;你的意思是說'toprowoflo = loSheetNames.Range.Row'?另外,在ReDim Preserve aray(lngCurrentIndex)中出現「類型不匹配」錯誤。 –

+0

此外,由於我知道有多少表名(它是loSheetNames中的行數),我不能在循環外調暗數組一次,而不是反覆地重新調整它? –

+0

'ReDim aray(loSheetNames.Rows.Count)'使數組長度與列表對象中的行數相同。是的'itemslist.Range.Row'現在應該是'toprowoflo = loSheetNames.Range.Row'更新的代碼。 – user2140261

相關問題