AW: Unklare Fragestellung - Fragestellung ist klar
21.12.2016 21:25:20
Dieter
Hallo André,
mit dieser Schleife zählst du nicht die Diagramme, sondern sämtliche Shape-Objekte. Das sind verschiedenste Objekte, die auf die Excel-Oberfläche geklebt werden (Bilder, Grafiken, Steuerelemente, Diagramme, Kommentare, Textfelder).
Karin hat ja einen Vorschlag gemacht, um die Diagramme zu zählen und sehr elegant auch zu löschen.
Deine Frage zu den "IF-Schleifen, bei denen Bedingungen nicht passen" habe ich nicht verstanden. Könntest du das noch präzisieren?
An meinem Programmvorschlag gefielen mir "Select" und "ActiveChart" nicht, ich konnte das aber nicht auf die Schnelle eliminieren. Jetzt habe ich das geschafft und auch den Löschvorschlag von Karin übernommen. Mein Programm sieht jetzt folgendermaßen aus:
Sub Diagramme_erstellen()
Dim breite As Single
Dim cho As Object
' Wenn cho als ChartObject deklariert wird, dann funktioniert unten die Set-Anweisung nicht!
Dim höhe As Single
Dim links As Single
Dim lngCountRows As Long
Dim oben As Single
Dim rng As Range
Dim sh As Shape
Dim spalteX As Long
Dim spalteY As Long
Dim wsD As Worksheet
Dim wsC As Worksheet
Set wsD = ThisWorkbook.Worksheets("Daten")
Set wsC = ThisWorkbook.Worksheets("Diagramme")
' Vorhandene Diagramme löschen
If wsC.ChartObjects.Count > 0 Then
wsC.ChartObjects.Delete
End If
spalteX = 29
lngCountRows = wsD.Cells(wsD.Rows.Count, "AC").End(xlUp).Row
oben = 20
links = 20
For spalteY = 30 To 34
Set rng = Union(wsD.Range(wsD.Cells(2, spalteX), wsD.Cells(lngCountRows, spalteX)), _
wsD.Range(wsD.Cells(2, spalteY), wsD.Cells(lngCountRows, spalteY)))
Set cho = wsC.Shapes.AddChart2(Style:=240, _
XlChartType:=xlXYScatterLines, _
Left:=links, _
Top:=oben)
links = links + 20 + cho.Width
cho.Chart.SetSourceData Source:=rng
Next spalteY
wsC.Activate
End Sub
Ist für deine Anwendung nicht so wesentlich, aber ich versuche, die genannten und verwandte Begriffe zu vermeiden.
Bei weiteren Fragen ist sicherlich eine Beispielmappe hilfreich, wie Karin schon gesagt hat. Die Daten können verändert und/oder anonymisiert sein.
Viele Grüße
Dieter