Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
648to652
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
648to652
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Automat. Diagramm erstellen

Automat. Diagramm erstellen
05.08.2005 15:25:35
Hans
Hallo,
folgendes Problem:
Ich hab eine Menge Excel Dateien. Alle Files haben drei Spalten, die sind jedoch unterschiedlich lang. Mit allen moechte ich aber dasselbe machen. Ich moechte die erste Spalte (A) und die letzte Spalte (C) markieren und als Punktdiagramm darstellen.
Wenn ich diese fuer alle Files per Hand machen muesste waere es zu anstrengend ...
Somit wollte ich ein Makro aufzeichnen, aber das Makro funktioniert nicht universell, sondern nur fuer die Datei, die ich ausgewaehlt habe.
Das Problem ist, dass Excel den Dateinamen speichert, und nicht automtische das aktuelle Sheet verwendet. Und es nimmt auch die alte Spaltenlaenge.
Wer kann mir helfen?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automat. Diagramm erstellen
05.08.2005 23:56:14
Ralf
Hallo Hans,
überall wo Du Workbooks("Trallala.xls") entdeckst, ersetzt Du das durch ActiveWorkbook.
Da, wo Du Worksheets("Tabelle1") entdeckst, ersetzt Du das durch ActiveSheet.
Und dort, wo Du die Adresse der letzten Zelle entdeckst, setzt Du eine Variable ein. Die Variable muß vorher natürlich auch gefüttert werden. Schreibe also direkt unter der Sub -Zeile des Makros:
Dim sLetzteZelle As string
sLetzteZelle = ActiveCell.SpecialCells(xlLastCell).Address
Wenn also in der Bereichszuweisung des Diagramms ("A1:C25") steht, mußt Du das durch ("A1:" & sLetzteZelle) ersetzen.
Das dürfte es schon gewesen sein.
Ciao, Ralf
Anzeige
AW: Automat. Diagramm erstellen
08.08.2005 11:09:31
Hans
Hallo,
vielen Dank fuer dein Hilfeversuch. Leider klappt es nocht nicht so ganz.
Ich poste deswegen mal den Quellcode, das macht die Sache vielleicht einfacher.
-----------------------------------------------------------------------
Makro Unbearbeitet:

Sub Diagramme_2()
' Diagramme_2 Makro
' Makro am 08.08.2005 von charon aufgezeichnet
Range("A:A,C:C").Select
Range("C1").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("TES_288.622-288.682_-23.2637--2"). _
Range("A1:A150,C1:C150"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.HasLegend = False
End Sub

Makro bearbeitet:

Sub diagramm()
' diagramm Makro
' Makro am 08.08.2005 von charon aufgezeichnet
Dim sLastCell As String
sLastCell = ActiveCell.SpecialCells(xlLastCell).Address
Range("A:A,C:C").Select
Range("C1").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=ActiveSheet. _
Range("A1:" & sLastCell, "C1:" & sLastCell), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.HasLegend = False
End 

Sub
Was meinen die Experten?!?

Anzeige
AW: Automat. Diagramm erstellen
08.08.2005 12:25:53
Ralf
Hallo Hans,
folgender Code sollte anstandslos funktionieren:

Sub diagramm()
Dim sLastCell As String, sBlatt As String, c As Shape
sBlatt = ActiveSheet.Name
sheets(sBlatt).Range("A1").Activate
sLastCell = ActiveCell.SpecialCells(xlLastCell).Address(RowAbsolute:=False, _
ColumnAbsolute:=False)
For Each c In Sheets(sBlatt).Shapes
c.Delete
Next
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets(sBlatt).Range("A1:" & sLastCell), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:=sBlatt
End Sub

Anzeige
AW: Automat. Diagramm erstellen
08.08.2005 14:04:12
Hans
Hallo,
danke fuer die schnelle Antwort.
Aber was macht dein Script genau?
Den Teil verstehe ich nicht:
For Each c In Sheets(sBlatt).Shapes
c.Delete
Next
Weiterhin hat dein makro kein
ActiveChart.HasLegend = False
!
AW: Automat. Diagramm erstellen
08.08.2005 15:34:16
Ralf
Hallo Hans,
mit der for each schleife werden alle bereits bestehenden Diagramme gelöscht. Das ist deshalb notwendig, weil sonst bei jedem Aufruf ein neues Diagramm hinzugefügt wird. Nach 100 Aufrufen hättest Du praktisch 100 Diagramme übereinander, ohne das unbedingt bemerken zu müssen (ausser vielleicht an der Dateigröße).
Wenn Du unbedingt darauf bestehst keine Legende sehen zu wollen, dann füge doch einfach die Anweisung ActiveChart.HasLegend = False wieder ein. Wer hindert Dich daran? Ich für meinen Teil finde die Legende ganz praktisch.
Ciao, Ralf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige