AW: Pivot-Wertebereich kopieren
02.11.2018 16:44:08
fcs
Hallo Manuel,
eiegentlich sollte deine Lösung funktionieren. Aber Fehler kommt natürlich, wenn Blatt mit dem Namen schon vorhanden.
So sollte es funktionieren mit entsprechender Fehlermeldung.
LG
Franz#
Sub CopyPivotRange()
Dim pvTab As PivotTable
Dim wksZ As Worksheet
Dim rngCopy As Range
Dim iFehler As Integer
Dim msgText$, msgTitle$
On Error GoTo fehler
iFehler = 1
Set pvTab = ActiveCell.PivotTable 'oder Activsheet.Pivottables(1)
Set rngCopy = pvTab.TableRange1 'gesamte Pivottabelle ohne Seitenfelder
'Set rngCopy = pvTab.TableRange2 'gesamte Pivottabelle mit Seitenfelder
'Set rngCopy = pvTab.DataBodyRange'nur Datenbereich der Pivottablle
'Set rngCopy = pvTab.ColumnRange 'nur Spaltentitel-Bereich der Pivottablle
'Set rngCopy = pvTab.DataLabelRange 'nur Zeilentitelbereich der Pivottablle
'Set rngCopy = pvTab.RowRange
'Set rngCopy = pvTab.PageRange
'Set rngCopy = pvTab.PageRangeCells
iFehler = 2
Set wksZ = ActiveWorkbook.Worksheets.Add(After:=ActiveSheet)
wksZ.Name = "Auswertung"
rngCopy.Copy
iFehler = 3
With wksZ.Range("A1")
.PasteSpecial xlPasteColumnWidths
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
fehler:
With Err
msgText = "FehleröNr.: " & .Number & vbLf & .Description
msgTitle = "Makro: Copy_PivotRange-Fehler"
Select Case .Number
Case 0
Case 1004
Select Case iFehler
Case 1
msgText = msgText & vbLf _
& "Vor dem Start des Makros Zelle in zu koperender Pivot-Tabelle plazieren"
MsgBox msgText, vbOKOnly + vbInformation, msgTitle
Case 2
msgText = msgText & vbLf & "Blatt ""Auswertung"" ist bereits vorganden. Weiter?" _
If MsgBox(msgText, vbYesNo + vbQuestion, msgTitle) = vbYes Then
Resume Next
Else
Application.DisplayAlerts = False
wksZ.Delete
Application.DisplayAlerts = True
End If
Case Else
MsgBox msgText, vbOKOnly, msgTitle
End Select
Case Else
MsgBox msgText, vbOKOnly, msgTitle
End Select
End With
End Sub