2017-12-15 57 views
0

다른 탭을 참조하는 동적 범위로 피벗 테이블을 만들고 싶습니다. 계속 "런타임 오류 '13 - 형식 불일치"주석 뒤에 "피벗 캐시를 정의하십시오". " 어떤 제안?동적 범위로 피벗 테이블 vba를 만들려고합니다.

Sub InsertExportPivotTables() 

'Declare Variables 
Dim PSheet As Worksheet 
Dim DSheet As Worksheet 
Dim PCache As PivotCache 
Dim PTable As PivotTable 
Dim PRange As Range 
Dim LastRow As Long 

'*************Actions by study 
'Insert a New Blank Worksheet for Actions by Study 
Application.DisplayAlerts = False 
Worksheets("Actions by Study").Delete 'deletes worksheet if already exists 
Sheets.Add Before:=ActiveSheet 
ActiveSheet.Name = "Actions by Study" 
Application.DisplayAlerts = True 
Set PSheet = Worksheets("Actions by Study") 
Set DSheet = Worksheets("export") 

'Define Data Range 
LastRow = DSheet.Range("A" & DSheet.Rows.Count).End(xlUp).Row 
Set PRange = DSheet.Range(DSheet.Cells(6, 1), DSheet.Cells(LastRow, "U")) 

'Define Pivot Cache 
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange, Version:=xlPivotTableVersion14) 

'Insert Blank Pivot Table 
Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(1, 1), _ 
     TableName:="ActionsbyStudy01", DefaultVersion:=xlPivotTableVersion14) 

End Sub 
+0

죄송하지만, SourceData는 PRANGE로 설정해야합니다. 이 인스턴스에서 실제 주소를 사용했는데 작동하는 것처럼 보였습니다. –

+0

오류가 무엇인지 저희에게 알려주십시오. 질문을 업데이트하십시오. – prospector

+0

죄송합니다. 오류는 런타임 오류 '13'입니다. 형식이 일치하지 않습니다. –

답변

0

당신은 PivotCaches.Create에게 명명 된 범위 아니지만 범위 개체를 전달할 수 있습니다. SOURCETYPE이 xlExternal없는 경우

SourceData 인수가 필요합니다. ( SOURCETYPE이 xlExternal경우) 그것은 범위 (SOURCETYPE이 경우 중 하나 xlConsolidation 또는 xlDatabase) 또는 Excel 통합 문서 연결 개체를 통과해야한다. Range를 전달할 때 문자열을 사용하여 통합 문서, 워크 시트 및 셀 범위를 지정하거나 명명 된 범위를 설정하고 이름을 문자열로 전달하는 것이 좋습니다.

범위 객체를 전달하는 예기치 않게 "유형 불일치"오류가 발생할 수 있습니다.

(더 Source에서 정보)는 늘 나를 지금 그것을 편집 할 수

+0

에서 오류가 발생했습니다. 명명 된 범위를 문자열로 전달하는 방법은 무엇입니까? –

+0

생각해 보면 :'ActiveWorkbook.Names ("yourRangeName"). RefersToRange' – ashleedawg