Diagrammformatierung/Datenreihen ändern sich von alleine
#1
Lightbulb 
Hallo,
habe hier ein mittelmäßig katastrophales Problem. Ich habe eine Userform entworfen, in der der Nutzer neue Datensätze anlegen kann, welche in einer Tabelle hinterlegt werden. Anschließend werden diese auf bestimmte Kriterien, welche auch eingegeben werden, überprüft und der Erfüllungsgrad mittels eines Diagrammes angezeigt. Das soll aussehen wie in den ersten beiden Bildern.

   

   

Der Code für das Anlegen eines neuen Datensatzes lautet:


Code:
Private Sub Label25_Click()
    'suchen der ersten leeren Zeile in Sheet1
    lIndex = 2
    Do While Trim(CStr(Sheets(1).Cells(lIndex, 1).Value)) <> ""
        lIndex = lIndex + 1
    Loop
    'abbruch der sub wenn nichts eingegeben oder gecancelt wird
    nAbt = Application.InputBox("A-Eingabe")
    If nAbt = False Or nAbt = "" Then
        Rows(lIndex).EntireRow.Delete
        Exit Sub
    End If
    nCel = Application.InputBox("C-Eingabe")
    If nCel = False Or nCel = "" Then
        Rows(lIndex).EntireRow.Delete
        Exit Sub
    End If
    nImd = Application.InputBox("I-Eingabe")
    If nImd = False Or nImd = "" Then
        Rows(lIndex).EntireRow.Delete
        Exit Sub
    End If
    'eingabe der standard kriterien
    Sheets(1).Cells(lIndex, 1) = nAbt
    Sheets(1).Cells(lIndex, 2) = nCel
    Sheets(1).Cells(lIndex, 3) = nImd
    Sheets(1).Cells(lIndex, 4) = "P"
    Sheets(1).Cells(lIndex, 6) = "P"
    Sheets(1).Cells(lIndex, 8) = "P"
    Sheets(1).Cells(lIndex, 10) = "P"
    Sheets(1).Cells(lIndex, 22) = "P"
    Sheets(1).Cells(lIndex, 24) = "P"
    'überprüfen ob bereits ein datensatz mit dem gleichen A-Wert besteht oder die Überschrift der ersten spalte gefunden wird
    lIndex3 = lIndex - 1
    Do Until Sheets(1).Cells(lIndex3, 1).Value = "A" Or Sheets(1).Cells(lIndex3, 1).Value = nAbt
        lIndex3 = lIndex3 - 1
    Loop
    'falls datensatz mit gleichem A-Wert besteht, aktionen durchführen und exit sub
    If Sheets(1).Cells(lIndex3, 1).Value = nAbt Then
        Call Modul2.sort_dep
        UserForm1.UserForm_Initialize
        ComboBox1.Clear
        ComboBox2.Clear
        ListBox1.Clear
        Call UserForm1.ComboBox1_Enter
        Exit Sub
    'falls noch kein datensatz mit gleichem A-Wert existiert Erweiterung des Diagrammbereichs und Setzen neuer Formeln
    ElseIf Sheets(1).Cells(lIndex3, 1).Value = "A" Then
        lIndex2 = 2
        Do Until Sheets(2).Cells(lIndex2, 1) = ""
            lIndex2 = lIndex2 + 1
        Loop
        Sheets(2).Cells(lIndex2, 1).Value = nAbt
        Sheets(3).ChartObjects("Diagramm 1").Activate
        ActiveChart.SetSourceData Source:=Range("'Chart_Data'!A2:C" & lIndex2)
        Sheets(2).Cells(lIndex2, 5).Formula = "=Countif(Data!A:A,""" & nAbt & """)"
        Sheets(2).Cells(lIndex2, 6).Formula = "=Countifs(Data!A:A,""" & nAbt & """,Data!AC:AC,""WAHR"")"
        Call Modul2.sort_dep
        UserForm1.UserForm_Initialize
        ComboBox1.Clear
        ComboBox2.Clear
        ListBox1.Clear
        Call UserForm1.ComboBox1_Enter
    End If
End Sub

Wenn ich nun einen neuen Datensatz anlegen passiert in Excel genau das, was passieren soll. In den richtigen Zellen stehen die richtigen Werte. Das Problem: der Diagrammbereich wird zwar auf den richtigen Wert angepasst, aber die Datenreihen sowie Formatierungen werden gelöscht und auf einen Standardwert gestellt:

   

   

Die Datei kann ich leider in der Form nicht hochladen, falls es absolut unmöglich ist eine Aussage über sich selbst resettende Formatierungen bei Diagrammen zu geben kann ich versuchen eine Beispieldatei zu erstellen um das Problem zu reproduzieren.

Gruß
Top
#2
Hallöchen,

tue die Zeilen nicht löschen, sondern leeren und anschließend neue Werte einfügen. In dieser Art bekommst Du immer Probleme, wenn Du die erste oder letzte Zeile des Datenbereichs eines Diagrammes löschst.

Eine Alternative wäre, mit einer Liste ("intelligente Tabelle") zu arbeiten. Markiere die Liste, füge ein Diagramm ein, und Du kannst Zeilen Löschen oder hinzufügen fast wie es Dir beliebt. Allerdings muss dazu der Code zum Löschen oder Einfügen etwas anders aussehen. Da findest Du aber bei uns auch viele Beispiele,
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo,
danke für die Antwort. Im geschilderten Fall lösche ich aber doch gar nichts (da ich erlaubte Werte in die Inputboxes eingebe)? Ich fülle eine bestehende Zeile und der Diagrammbereich wird entsprechend erweitert.
Gruß
Top
#4
Hab gerade etwas interessantes bemerkt, wenn ich händig mehr >=2 Datensätze im Diagrammbereich habe wird die Formatierung beim Anlegen neuer Datensätze mit dem gleichen Code nicht zerschossen.
Top
#5
Habe das Problem entsprechend meiner vorherigen Antwort dadurch gelöst, einen Platzhalter und eine Bedingung einzubauen die das Löschen von Zeilen verhindert sobald die Anzahl der dargestellten Datensätze 2 beträgt.
Erledigt.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste