2017-10-11 1 views
0

ich denke, das ein einfacher sein sollte bedenken, dass ich sehr wenig VB Wissen :) Ich habe einen Makro aufgezeichnet eine Pivot-Tabelle für einen Bereich auf der aktuellen Seite zu erstellen. Natürlich ist das der Code, um eine Pivot-Tabelle für dieses spezifische Blatt zu erstellen. Ich versuche, den Code anzupassen, um den Namen des aktiven Blattes zu nehmen, so dass ich dieses Makro über verschiedene Blätter hinweg verwenden kann. Ich habe versucht, genau zu suchen und zu finden, wie man den Namen zurückholt und dann diesen Namen dem Code zur Verfügung stellt, der der Prozess der Erschaffung der Pivot-Tabelle sein wird.Passing Excel-Tabelle Namen in Makro VB

ich eine Straßensperre an dem ActiveWorkbook.PivotCaches.Create Abschnitt des Codes bin zu schlagen. Ich erhalte die Meldung "Laufzeitfehler '1004': Anwendungsdefinierte oder objektdefinierte Fehler".

Jede Hilfe würde sehr geschätzt werden!

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

Ich verwende derzeit Excel 2016 – Zwick44

Antwort

1

Ändern Sie diese

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

Zu diesem

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

Und das

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

Um dies zu

ActiveWorkbook.Sheets(sht).Range("N1") 
+0

Das hat funktioniert !!! Vielen Dank! Würde es Ihnen etwas ausmachen, mir eine kurze Beschreibung des Problems mit dem Sortiment zu geben? – Zwick44

+0

Froh, dass wir die Antwort gefunden haben! Was Ihr Makro aufgezeichnet hätte, wäre etwas wie "Sheet5! R1C12: R4C5", beachten Sie, dass die gesamte Bereichsreferenz innerhalb des "" liegt. Wenn Sie Ihren Bereich mit der Variablen erstellt haben, für die Sie Arbeitsblätter (sht) .Range ("! R1C1: R1048576C11") hatten. Dies ist keine gültige Bereichskonstruktion wie der Fehler angezeigt. Das ! zeigt das Ende des Worksheet-Objekts an, d.h. Sheet5! – QHarr

+0

Macht vollkommen Sinn. Danke nochmal QHarr! – Zwick44