Fehler beim erneuten füllen von Diagrammen

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von marcel90.

    Fehler beim erneuten füllen von Diagrammen

    Hallo @all,

    ich hätte ein kleines Problem, das ich leider nicht Lösen kann. (Trotz tagelanger Recherche)
    Es geht hier um diese Funktion.

    Quellcode

    1. Function diagramm(DiagrammSeite, DatenSeite, seite, variable, variable_2)
    2. Sheets(DiagrammSeite).Select
    3. Dim cht As Chart
    4. Set cht = ActiveChart
    5. If seite = 1 Then
    6. cht.SetSourceData Source:=Worksheets(DatenSeite).Range("B" & variable - 1 & ":E" & variable - 1 - variable_2)
    7. ElseIf seite = 2 Then
    8. cht.SetSourceData Source:=Worksheets(DatenSeite).Range("H" & variable - 1 & ":K" & variable - 1 - variable_2)
    9. End If
    10. End Function




    Ziel: Es gibt vorhandene Diagramme die ich einfach mit neuen Daten füllen möchte.

    Was ich mache:
    -Ich öffne meine Excel-Datei
    -Starte mein Programm. (Alles funktioniert und die Diagramme werden auch mit den neuen Daten gefüllt)
    -Starte das Programm erneut (Ich bekomme den Fehler: Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler)
    Dabei springt der Debugger auf diese Zeile:

    Quellcode

    1. cht.SetSourceData Source:=Worksheets(DatenSeite).Range("B" & variable - 1 & ":E" & variable - 1 - variable_2)


    Ich verstehe nicht, wieso es beim ersten Durchgang funktioniert, aber wenn ich es ein zweites mal ausführen möchte mir ein Fehler angezeigt wird.

    Vielen Dank im Voraus
    Willkommen im Forum.
    Da ich Deine Daten nicht habe, habe ich selber Daten zusammengebastelt. Das Mehrfachaufrufen funktioniert an sich. Es sind also wohl die Argumente (die mit seite, variable und variable_2 etwas verwirrend beschrieben werden), die zu Problemen führen. Welche Werte haben denn variable und variable_2 beim 2. Durchgang?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hallo VaporiZed,

    vielen Dank für deine Antwort.

    Aufbau:
    Ich habe ein Worksheet mit insgesamt 16 Tabellen.
    Zwei Tabellen sind immer nebeneinander:
    (linke Tabellen) (rechte Tabellen)
    Tabelle1 Tabelle2
    Tabelle3 Tabelle4
    Tabelle5 Tabelle6
    ..
    Tabelle15 Tabelle16

    Seite: soll mir die Möglichkeit geben zwischen den tabellen der linken Seite und rechten Seite zu wechseln (Unten in Lila und grün makiert)
    If seite = 1 Then
    cht.SetSourceData Source:=Worksheets(DatenSeite).Range("B" & variable - 1 & ":E" & variable - 1 - variable_2)
    ElseIf seite = 2 Then
    cht.SetSourceData Source:=Worksheets(DatenSeite).Range("H" & variable - 1 & ":K" & variable - 1 - variable_2)
    End If

    Da ich die Tabellen wären des Programmcodes selber erstelle und somit die Anzahl der Zeilen sich ändern brauche ich eine Variable, die mir sagt wie viele Zeilen eine Tabelle hat.
    Variable_2: ist genau diese Anzahl (in Rot)
    Range("B" & variable - 1 & ":E" & variable - 1 - variable_2)

    Da sich beim Erstellen der Tabellen auch automatisch die Tabellen nach unten verschieben, muss ich wissen ab wann eine bestimmte Tabelle aufhört, um den Wertebereich zu bestimmen.
    Variable_1: ist genau dieser Wert (in Orange)
    cht.SetSourceData Source:=Worksheets(DatenSeite).Range("B" & variable - 1 & ":E" & variable - 1 - variable_2)

    Sprich ("B" & variable - 1 (Hier endet die Tabelle) & ":E" & variable - 1 - variable_2 (Hier endet die Tabelle - Anzahl der Zeilen die die Tabelle hat)Was bedeutet es ist der Anfang der Tabelle

    DatenSeite: ist das Worksheet wo alle Tabellen hinterlegt sind
    DiagrammSeite: Jedes Diagramm ist auf einer eigenen Seite. Deswegen muss ich den Namen mitschicken um diese ansprechen zu können.

    Nun zu deiner Frage:

    Da ich das Programm zwei mal hintereinander abspielen lasse, bauen sich die Tabellen wieder gleich auf. Somit weise ich dem vorhanden Diagramm den gleichen Wertebereich zu. Da ich das erneute Füllen der Diagramme auf dem selben Wertebereich als Problem gesehen habe, habe ich davor dem Diagramm ein anderen Wertebereich zugewiesen. (Dies hat jedoch auch nicht geholfen)

    Vielen Dank im Voraus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „marcel90“ ()

    marcel90 schrieb:

    bauen sich die Tabellen wieder gleich auf.
    Die Tabellen oder die Diagramme? Denn wenn sich die Tabellen aufbauen und mit Werten befüllt werden, könnte das zu Problemen führen, wenn Dein Code schneller ist als der (Wieder-)Aufbau.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @marcel90 Bitte in Zukunft kein Rot mehr verwenden, dies ist dem Forumteam vorbehalten. Danke.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Dann bleibt Dir wohl erstmal nur das Rantasten, alias Fehlersuche: leeres Sheet, ein paar Daten und eine einfache Variante Deiner Funktion. Dann immer näher an die Endfunktion ranarbeiten. irgendwo wird es nicht mehr funktionieren. Denn wie gesagt: Im Grunde funktioniert das Doppelzuweisen, siehe Post#2.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.