Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Pivot Chart Lauzeit Fehler -21474677259 (80004005)

Betrifft: Pivot Chart Lauzeit Fehler -21474677259 (80004005) von: thuburbo
Geschrieben am: 25.10.2014 11:27:56

Hallo Zusammen,

Mein Ziel: Erstellung einer Sub zu Pivot Chart - Erzeugung (code s.u.) die mehrmals aufgerufen werden kann.

In einem Reiter Tabelle1 habe ich die u.g. Daten eingepflegt und als Bereich "Jahr" benannt.

Die Sub funktioniert beim ersten Aufruf Einwandfrei. Jedoch beim wieder wählen von Tabelle1 und der erneuten Ausführung (beim 2 oder 3 Mal) erzeugt Excel

Laufzeitfehler '-21474677259 (80004005)': Die Methode 'SetSourceData' für das Objekt '_Chart' ist fehlgeschlagen.

Der Debugger bleibt bei der Zeile SetSourceData (beim zweiten oder dritten Aufruf) hängen.

Range "Jahr" in Tabelle1:










ItemArtJanuarFebruarMärzAprilMaiJuniJuliAugust
MonatMat12345678
StundenHR534354352167





Private Sub CB_Pivot_Click()
'
'
'
    Dim DatenTabelle As Range
    Dim i As Integer
    Dim MeinPivot As String
    Dim ueberschrift As String
    Dim MeinReiter As Worksheet
    Dim pc As PivotCache
    
'On Error GoTo Fehler
    Set DatenTabelle = ActiveSheet.Range("Jahr")
    
    Set MeinReiter = Worksheets.Add(after:=ActiveSheet)
        
    MeinPivot = MeinReiter.Name & "Pivot"
   
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        DatenTabelle, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:=MeinReiter.Name & "!R3C1", TableName:=MeinPivot, _
        DefaultVersion:=xlPivotTableVersion14
    
    With MeinReiter.PivotTables(MeinPivot).PivotFields("Art")
        .Orientation = xlPageField
        .Position = 1
    End With
       
    With MeinReiter.PivotTables(MeinPivot).PivotFields("Item")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    
    For i = 2 + 1 To DatenTabelle.Columns.Count
        ueberschrift = DatenTabelle.Cells(1, i).Value
        MeinReiter.PivotTables(MeinPivot).AddDataField MeinReiter.PivotTables( _
            MeinPivot).PivotFields(ueberschrift), "Sum " & ueberschrift, xlSum
    Next i
    
    With MeinReiter.PivotTables(MeinPivot).PivotFields("Art")
        .ClearAllFilters
        For i = 1 To .PivotItems.Count
            If StrComp(.PivotItems(1), "HR", vbTextCompare) = 0 Then
                .CurrentPage = "HR"
                Exit For
            End If
        Next
    End With
    
    Erstelle_Pivot_Grafik MeinReiter.PivotTables(MeinPivot)
    
    Set MeinReiter = Nothing
    Set pc = Nothing
    Exit Sub
    
'Fehler:
'    MsgBox "Konnte Pivot Tabelle nicht erstellen", vbCritical, "FEHLER"
End Sub

Sub Erstelle_Pivot_Grafik(PT As PivotTable)  'as chart
    Dim MeinDiagramm As Chart
    Dim rngChart As Range
    DoEvents
    
    Set MeinDiagramm = PT.Parent.Parent.Charts.Add(after:=PT.Parent)

    Set rngChart = PT.TableRange1
   
    With MeinDiagramm
        .SetSourceData rngChart
        .ChartType = xlAreaStacked
        .ShowAxisFieldButtons = False
        .ShowValueFieldButtons = False
        .PlotBy = xlRows
        .Refresh
    End With
    

    Set rngChart = Nothing
    Set MeinDiagramm = Nothing

    
End Sub

  

Betrifft: AW: Pivot Chart Lauzeit Fehler -21474677259 (80004005) von: Tino
Geschrieben am: 25.10.2014 11:59:30

Hallo,
warum ein Fehler auftritt ist mir jetzt auch nicht ersichtlich.

Schalte einfach ein On Error Resume Next davor

    On Error Resume Next
    With MeinDiagramm
        .SetSourceData rngChart
        .ChartType = xlAreaStacked
        .ShowAxisFieldButtons = False
        .ShowValueFieldButtons = False
        .PlotBy = xlRows
        .Refresh
    End With
Gruß Tino


  

Betrifft: AW: Pivot Chart Lauzeit Fehler -21474677259 (80004005) von: thuburbo
Geschrieben am: 25.10.2014 13:29:35

Hallo Tino,

vielen Dank, jedoch das löst meine Fragestellung nicht.
Excel erstellt das Erste Diagramm. Bei der Erstellung des Fehlerhaften nimmt er als Default SourceData die letzte Quelle. Beim Versuch die Quelle zu ändern, die aus Irgendeinen Grund plötzlich geschützt ist, generiert er einen Fehler.
Warum den Fehler beim Dritten Aufruf auftaucht ist mir immer noch ein Rätsel!


  

Betrifft: evtl. wegen gleicher Quelle Range("Jahr") (offen) von: Tino
Geschrieben am: 25.10.2014 13:42:00

Hallo,
ich vermute mal das die gleiche Quelle Range("Jahr") dafür verantwortlich ist.

Gruß Tino


  

Betrifft: AW: evtl. wegen gleicher Quelle Range("Jahr") (offen) von: thuburbo
Geschrieben am: 25.10.2014 14:56:31

Danke Tino,

Ich befürchte, das ist auch nicht die Lösung.

Das Diagramm basiert auf der PivotTable, die auf der PivotCache, der auf "Jahr" basiert.
Beim zweiten Aufruf erstellt die Funktion eine zweite Tabelle. Diese Tabelle basiert auf einem neuem PivotCache (über Property CacheIndex konnte ich es überprüfen).

Wenn du mit dem Debugger schrittweise ausführst, wirst du merken dass Excel als Initialisierung SourceData sich für die vorherige Quelle entscheidet d.h. die erste PivotTabelle wird als Default Quelle gwählt und die Methode SetSourceData wird gesperrt. Meine Meinung nach: diese Sperrung verursacht den Fehler. Weil ich versuche eine geschützte Eigenschaft zu ändern.

Aus meiner Sicht brauche ich einen Art Reset für die Source Quelle zwischen zwei Chart Erstellung. Diese Funktion fehlt mir.


  

Betrifft: AW: evtl. wegen gleicher Quelle Range("Jahr") von: Tino
Geschrieben am: 25.10.2014 15:03:56

Hallo,
wenn ich für den Rangebereich Jahr einen zweiten Namen vergebe zBsp. Jahr1 und
deinen Code erst mit Jahr laufen lasse und danach nochmal mit Jahr1 bekomme ich keinen Fehler.
Aber ist nur Spekulation kenne mich mit Pivot nicht so gut aus.
Ich lass offen!

Gruß Tino


  

Betrifft: AW: evtl. wegen gleicher Quelle Range("Jahr") von: thuburbo
Geschrieben am: 27.10.2014 11:05:46

Guter Hinweis Tino
warum meldet er dann Fehler erst beim dritten aufruf? Es müsste bereits beim Zweiten melden.


  

Betrifft: AW: evtl. wegen gleicher Quelle Range("Jahr") von: thuburbo
Geschrieben am: 27.10.2014 11:06:03

Guter Hinweis Tino
warum meldet er dann Fehler erst beim dritten aufruf? Es müsste bereits beim Zweiten melden.


  

Betrifft: in meinem Nachbau schon beim zweiten mal oT. von: Tino
Geschrieben am: 27.10.2014 17:26:30




 

Beiträge aus den Excel-Beispielen zum Thema "Pivot Chart Lauzeit Fehler -21474677259 (80004005)"