Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makro für ein Diagramm
27.11.2008 17:14:57
Robert
Hallo!
Ich habe bereits das halbe Forum durchwäözt, bin aber leider nicht auf nützliche Tipps gestoßen.
Ich habe ein separates Sheet, auf dem in Spalte A das Datum steht,
und Spalte B und C sind gefüllt mit Werten.
Ich benötige ein Makro, welches die Länge der Datenteihe erkennt und dann daraus automatisch einen Linien Chart erstellt. DIesen dann aber auf einem neuen Sheet mit Namen "Chart".
Da monatlich die Daten verlängert werden, reicht es auch, wenn der vorhandene CHart jeweils aktualisiert wird.
Leider komme ich überhaupt nicht weiter und freue mich daher auf Eure Unterstützung!
Besten Dank und viele Grüße
Robert

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für ein Diagramm
27.11.2008 17:25:46
Beverly
Hi Robert,

Sub diagramm_erstellen()
Dim loLetzte As Long
Dim chdiagramm As Chart
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
If ThisWorkbook.Charts.Count = 0 Then
Set chdiagramm = Charts.Add
chdiagramm.Name = "Chart"
Else
Set chdiagramm = Charts("Chart")
End If
With chdiagramm
.ChartType = xlLineMarkers
.SetSourceData Source:=Sheets("Tabelle1").Range("A1:C" & loLetzte), PlotBy _
:=xlColumns
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub




Anzeige
AW: Makro für ein Diagramm
27.11.2008 17:35:04
Robert
Vielen Dank für die schnelle Antwort!!!
AW: Makro für ein Diagramm
28.11.2008 12:43:00
Robert
Hallo Karin,
ich habe gerade erst das Makro ausprobieren können!
Leider Stopt der "counter" immer in Zeile 27, obwohl über 200 Zeilen vorhanden sind!
Der Chart ist also nie länger als 27 Zeilen....
Woran kann das liegen?
Beste Grüße
Robert
AW: Makro für ein Diagramm
28.11.2008 13:00:06
Beverly
Hi Robert,
von welchem Tabellenblatt aus rufst du die Prozedur auf? Offensichtlich wird die letzte belegte Zelle in Spalte A nicht richtig ermittelt. Wenn es nicht Tabelle1 ist, dann musst du diese Zeile ändern:

loLetzte = IIf(IsEmpty(Sheets("Tabelle1").Cells(Sheets("Tabelle1").Rows.Count, 1)), Sheets(" _
Tabelle1").Cells(Sheets("Tabelle1").Rows.Count, 1).End(xlUp).Row, Sheets("Tabelle1").Rows.Count)




Anzeige
AW: Makro für ein Diagramm
28.11.2008 14:10:00
Robert
Also das Sheet in dem die Daten liegen heißt "ChartData"
Habe gerade versucht diese Zeile aus Deinem ersten Makro:
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
Durch diese neue:
loLetzte = IIf(IsEmpty(Sheets("ChartData").Cells(Sheets("ChartData").Rows.Count, 1)), Sheets(" _
ChartData").Cells(Sheets("ChartData").Rows.Count, 1).End(xlUp).Row, Sheets("ChartData").Rows.Count)
zu ersetzen..aber Excel meldet noch einen Fehler, den ich noch nicht finden konnte...
AW: Makro für ein Diagramm
28.11.2008 15:47:00
Beverly
Hi Robert,
dann lade doch deine Arbeitsmappe mal hoch, da kann man das besser nachvolliehen.


Anzeige
AW: Makro für ein Diagramm
28.11.2008 16:26:39
Robert
Liebe Karin,
leider kann ich aufgrund der Daten in der Datei, die Datei nicht im ganzen uploaden.
Hier aber das Makro im Überblick:

Private Sub CommandButton2_Click()
Sheets("Data").Select
ActiveSheet.Range("H1:J2000").Select
Selection.Copy
Sheets("ChartData").Select
With ActiveSheet.Range("A1:C2000").Select
Selection.PasteSpecial Paste:=xlValues
Selection.PasteSpecial Paste:=xlFormats
End With
Dim loLetzte As Long
Dim chdiagramm As Chart
loLetzte = IIf(IsEmpty(Sheets("ChartData").Cells(Sheets("ChartData").Rows.Count, 1)),  _
Sheets("ChartData").Cells(Sheets("ChartData").Rows.Count, 1).End(xlUp).Row, Sheets("ChartData").Rows.Count)
If ThisWorkbook.Charts.Count = 0 Then
Set chdiagramm = Charts.Add
chdiagramm.Name = "Chart"
Else
Set chdiagramm = Charts("Chart")
End If
With chdiagramm
.ChartType = xlLine
.SetSourceData Source:=Sheets("ChartData").Range("A1:C" & loLetzte), PlotBy _
:=xlColumns
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub


Zuerst wird die entsprechende Datenreihe aus dem Sheet "Data" in das Sheet "ChartData" kopiert.
Das liegt daran, dass im Sheet "Data" die Zellen durch eine "Wenn-Dann-Formel" mit Verknüpfung zu einem weiteren Datensheet befüllt werden.
Es wird der Zellbereich bis Zeile 2000 kopiert, weil mtl. Daten ergänzt werden. Derzeit sind lediglich die Zellen bis Zeile 300 ausgefüllt. Allerdings ist im Sheet "Data" bis Zeile 2000 in jeder Zelle die "Wenn-Dann-Formel" hinterlegt.
Das Makro für den Chart funktioniert so weit, nur leider selektiert das Makro nun die Zellen 1-2000 im Sheet "ChartData". Daher ist der Chart jetzt leider viel zu lang!
Das muss wohl damit zusammenhängen, dass ich vorher die Daten in das Sheet "ChartData" kopiert habe, oder?!
Leider kann ich selber nicht programmieren und baue mir die Sachen aufgrund der guten Hilfe hier eher intuitiv zusammen... :)
Vielen lieben Dank für Deine Hilfe!
Robert

Anzeige
AW: Makro für ein Diagramm
28.11.2008 17:19:00
Beverly
Hi Robert,
durch das Übertragen des Formats wird die letzte belegte Zelle loLetzte falsch ermittelt.
Ich baue die Datei jetzt nicht nach, weil ein Nachbau nie identisch mit dem Original sein kann. Lösche bitte einfach alle nicht mit dem Problem verbundenen Daten (Achtung - Kopie vorher anlegen!) und lade die Arbeitsmappe dann hoch.


AW: Makro für ein Diagramm
28.11.2008 17:51:16
Robert
Habe gerade festgestellt, dass die Datei leider zu groß ist....upload ist nur bis 300kb möglich!
Habe Dir die Datei an die auf Deiner Website angegebenen EMailadresse geschickt!
1000 Dank für Deine Hilfe!
Robert
Anzeige
AW: Makro für ein Diagramm
29.11.2008 08:06:00
Beverly
Hi Robert,
die letzte belegte Zelle wird jetzt in dem Tabellenblatt "Zeitreihe" ermittelt, da sie ja identisch mit der letzten Zelle für die Darstellung im Diagramm ist:

Private Sub CommandButton2_Click()
Dim loLetzte As Long
Dim chdiagramm As Chart
With Worksheets("Zeitreihe")
loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count)
End With
With Sheets("Data")
.Range(.Cells(1, 8), .Cells(loLetzte, 10)).Copy
Sheets("ChartData").Range("A1").PasteSpecial Paste:=xlValues
Sheets("ChartData").Range("A1").PasteSpecial Paste:=xlFormats
End With
If ThisWorkbook.Charts.Count = 0 Then
Set chdiagramm = Charts.Add
chdiagramm.Name = "Chart"
Else
Set chdiagramm = Charts("Chart")
End If
With chdiagramm
.ChartType = xlLine
.SetSourceData Source:=Sheets("ChartData").Range("A1:C" & loLetzte), PlotBy _
:=xlColumns
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.ChartArea.Interior.Color = RGB(255, 255, 255)
.PlotArea.Border.ColorIndex = 16
.PlotArea.Interior.ColorIndex = 2
.PlotArea.Interior.PatternColorIndex = 1
.PlotArea.Interior.Pattern = xlSolid
.PlotArea.Border.LineStyle = xlContinuous
End With
End Sub




Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige