2017-10-11 3 views
0

저는 이것이 아주 작은 VB 지식을 가지고 있다고 생각합니다. 저는 현재 시트의 범위에 대한 피벗 테이블을 만들기 위해 매크로를 기록했습니다. 물론 이것이 저에게주는 것은 특정 시트에 대한 피벗 테이블을 만드는 코드입니다. 다른 시트에서이 매크로를 사용할 수 있도록 활성 시트의 이름을 가져 오도록 코드를 조정하려고합니다. 필자는 이름을 검색 한 다음 해당 이름을 피벗 테이블을 만드는 프로세스가 될 코드에 제공하는 방법을 검색하고 찾아 내려고 노력했습니다.Excel 시트 이름을 매크로에 전달 VB

코드의 ActiveWorkbook.PivotCaches.Create 섹션에서로드 블록을 치고 있습니다. "런타임 오류 '1004': 응용 프로그램 정의 또는 개체 정의 오류"메시지가 나타납니다.

도움이 될 것입니다.

Sub Macro1() 

Dim sht As String 
sht = ActiveSheet.Name 

    Columns("A:K").Select 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     Worksheets(sht).Range("!R1C1:R1048576C11"), Version:=6).CreatePivotTable TableDestination:= _ 
     Worksheets(sht).Range("!R1C14"), TableName:="PivotTable3", DefaultVersion:=6 
    ActiveSheet.Select 
    Cells(1, 14).Select 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Department") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields(_ 
     "Originating Master Name") 
     .Orientation = xlRowField 
     .Position = 2 
    End With 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Net") 
     .Orientation = xlRowField 
     .Position = 3 
    End With 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Month") 
     .Orientation = xlRowField 
     .Position = 4 
    End With 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("Net"), "Count of Net", xlCount 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Month") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Net") 
     .Caption = "Sum of Net" 
     .Function = xlSum 
    End With 
End Sub 
+0

현재 Excel을 사용하고 있습니다. 2016 – Zwick44

답변

1

변경이

Worksheets(sht).Range("!R1C1:R1048576C11") 

ActiveWorkbook.Sheets(sht).Range("A1:K1048576") 

으로

그리고이

Worksheets(sht).Range("!R1C14") 

,461으로
+0

효과가있었습니다. 정말 고마워! 범위 문제에 대해 간단한 설명을 주시겠습니까? – Zwick44

+0

우리는 답을 찾았습니다. 매크로에서 기록한 내용은 "Sheet5! R1C12 : R4C5"와 같았습니다. 전체 범위 참조가 ""안에 있음을 유의하십시오. 워크 시트를 만들 때 변수를 사용하여 범위를 만들었습니다 (sht). Range ("! R1C1 : R1048576C11"). 오류가 표시된 것과 같이 유효한 범위 구성이 아닙니다. 그! 워크 시트 개체, 즉 Sheet5의 끝을 나타냅니다. – QHarr

+0

완벽한 의미가 있습니다. 다시 한 번 감사드립니다 QHarr! – Zwick44

관련 문제