automatische Erzeugung von Zellgrössen

hollow02

Grünschnabel
Hallo zusammen,

ich verzweifel gerade ein bisschen. Ich möchte eine Funktion in mein Programm einbauen bei durch einen Knopfdruck Daten aus einer Tabelle kopiert werden(das bekomme ich hin) Gleichzeitig soll eine Pivot Tabelle aus dieses Daten erstellt werden (schon schwieriger = Code für Pivot-Table Erzeugung?) Dazu soll das System gleichzeitig noch die Zellen in der Pivot Tabelle so arrangieren wie ich es gerne haette. Standards hierfür habe ich schon definiert. Nur wie lautet der Code für sowas? Kann mir da einer helfen? Mein Buch wills mir nicht sagen.=( Waere recht dringend.

Danke schon mal!

grüsse
hollow
 
Hi,
so sollte es funktionieren:

Code:
        Dim lngRows As Long
        Dim lngRows As Long
        Dim ptTable As PivotTable
        Dim pcCache As PivotCache
        Dim wsSource As Worksheet
        Dim wsDestination As Worksheet
        
        Set wsSource = ThisWorkbook.Worksheets(...)
        Set wsDestination = ThisWorkbook.Worksheets(...)
        
        lngRows = wsSource.UsedRange.Rows.Count
        lngCols = wsSource.UsedRange.Columns.Count
        
        'add pivot cache and pivot table
        Set pcCache = ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
            SourceData:=wsSource.Name & "!R1C1:R" & lngRows & "C" & lngCols)
        Set ptTable = pcCache.createPivotTable( _
            TableDestination:=wsDestination.Cells(1, 1), _
            TableName:="MyPivotTable", _
            DefaultVersion:=xlPivotTableVersion10)
        
        ptTable.ManualUpdate = True
        
        
        'add page field
            With ptTable.PivotFields([page field])
                .Orientation = xlPageField
                .Position = 1
            End With
            ...
            
        'add column field
            With ptTable.PivotFields([column field])
                .Orientation = xlColumnField
                .Position = 1
            End With
            ...
            
        'add row field
            With ptTable.PivotFields([row field])
                .Orientation = xlRowField
                .Position = 1
            End With
            ...
            
        'add data field
            Call ptTable.AddDataField(ptTable.PivotFields( _
                [data field]), _
                "Sum of xxx", _
                xlSum)
        
        wsDestination.Columns.AutoFit

An Stelle von [page field] etc. musst du die entsprechenden Spaltennamen einfügen.
Die Definition der Felder kann auch mehrfach vorgenommen werden, also um z.B. mehrere Row Fields oder so zu bekommen. Einfach ausprobieren.

Grüße,

NeMeSiS
 
hi NeMeSiS1987,

erstmal vielen Dank für die Hilfe.

Verstehe ich das richtig das ich nur die [ ....] entries ersetzen muss durch meine jeweiligen Daten? ansonsten kann ich das so komplett kopieren?

Das waere ja wundervoll. hab mir neamlicg die letzten Tage mit "recording" das hirn zermatert und ich glaube gefühlte 300 mal das selbe makro aufgenommen. ^^

Ich probiers heute aus und sag dir dann bescheid ob klappt oder net.

danke

gruss
hollow
 
Zurück