Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
480to484
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
480to484
480to484
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diagramme mit VBA erstellen

Diagramme mit VBA erstellen
08.09.2004 15:54:08
Piotr
Hallo Zusammen,
ich habe noch eine Bitte. Ich habe viele sheets mit je einer Tabbelle (x und y-Werte). Mit Diagramm einfügen und dem Diagramm-Assistenen kann man ein Punkt(XY)-Diagramm erstellen, dann wieder ein weiteres Diagramm manuell hinzufügen und so weiter.
Das Makro dazu sieht so aus:

Sub M_Diagramm()
' M_Diagramm Makro
' Makro am 08.09.2004 von Piotr aufgezeichnet
Sheets("N80").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("N80").Range("C25")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='N80'!R3C3:R4C3"
ActiveChart.SeriesCollection(1).Values = "='N80'!R3C4:R4C4"
ActiveChart.SeriesCollection(1).Name = "='N80'!R1C2:R1C4"
ActiveChart.SeriesCollection(2).XValues = "='N81'!R3C3:R4C3"
ActiveChart.SeriesCollection(2).Values = "='N81'!R3C4:R4C4"
ActiveChart.SeriesCollection(2).Name = "='N81'!R1C2:R1C4"
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Test Diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Test-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "1/t"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "ln OIT"
End With
Charts.Add
End Sub

Meine Frage: kann man diese Prozedur mit VB automatisieren in dem man das Macro verändert und irgendwo an einer Stelle eine Schleife einfügt?
Vielen Dank im voraus
Piotr

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

Betreff
Datum
Anwender
Anzeige
AW: Diagramme mit VBA erstellen
08.09.2004 19:40:54
andre
Hallo Pjotr,
klar geht das:

Sub M_Diagramm()
' M_Diagramm Makro
' Makro am 08.09.2004 von Piotr aufgezeichnet
For i=80 to 90 step 2 'ein Diagramm holt Daten aus 2 Blättern, z.b. 80+81, 82+83 ...
Sheets("N" & i).Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("N" & i).Range("C25")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='N" & i & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(1).Values = "='N" & i & "'!R3C4:R4C4"
ActiveChart.SeriesCollection(1).Name = "='N" & i & "'!R1C2:R1C4"
ActiveChart.SeriesCollection(2).XValues = "='N" & i+1 & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(2).Values = "='N" & i+1 & "'!R3C4:R4C4"
ActiveChart.SeriesCollection(2).Name = "='N" & i+1 & "'!R1C2:R1C4"
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Test Diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Test-Diagramm"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "1/t"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "ln OIT"
End With
Charts.Add
End Sub

Anzeige
AW: Diagramme mit VBA erstellen
09.09.2004 15:36:23
piotr
Hallo Andre
leider funktioniert das nur bis zu der 1 Zeile der Schleife, ab da nicht mehr. Der Name wird einfach nicht erkannt. z.B N83 wird nicht erkannt. Bitte nochmals um Hilfe
Gruß, Piotr
Sub nicht_bearbeiten()
'
' nicht_bearbeiten Makro
' Makro am 09.09.2004 von Piotr aufgezeichnet
'
'
Sheets("N80").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("N80").Range("D21"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection(1).XValues = "='N80'!R3C3:R4C3"
ActiveChart.SeriesCollection(1).Values = "='N80'!R3C4:R4C4"
ActiveChart.SeriesCollection(1).Name = "='N80'!R1C2:R1C4"

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "='N81'!R3C3:R4C3"
ActiveChart.SeriesCollection(2).Values = "='N81'!R3C4:R4C4"
ActiveChart.SeriesCollection(2).Name = "='N81'!R1C2:R1C4"

For i = 83 To 85 Step 1
ActiveChart.SeriesCollection.NewSeries
Sheets("N" & i).Select
ActiveChart.SeriesCollection(i - 79).XValues = "='N" & i & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(i - 79).Values = "='N" & i & "'!R3C4:R4C4"
ActiveChart.SeriesCollection(i - 79).Name = "='N" & i & "'!R1C2:R1C4"
Next i

Anzeige
AW: Diagramme mit VBA erstellen
09.09.2004 16:32:22
andre
Hallo Piotr,
funktioniert es wenn Du rechts die 83 hinschreibst?
Grüße, Andre
AW: Diagramme mit VBA erstellen
09.09.2004 17:27:15
Piotr
Wenn ich per Hand eingebe dann ja.
Die z.B 83 wird einfach in diese Form
"='N" & i & "'!R3C3:R4C3"
nicht übernommen. Hier hält die Schleife an.
Sie müsste normalerweise in dem Ablauf der Schleife so aussehen:
"='N83'!R3C3:R4C3"
Gruß, Piotr
AW: Diagramme mit VBA erstellen
09.09.2004 19:33:16
Thomas Scher
Hallo zusammen,
ist es nicht so das I ein Integer ist ???
Ich vermisse den dim Befehl
dim i as Integer
for i = 88 to 92 step 2
Vielleicht ist es das ???
Gruß
Thomas
AW: Diagramme mit VBA erstellen
09.09.2004 20:13:33
andre
Hallo Thomas,
Pjotr hat die 83 ja drin - sonst würde das Makro auch schon bei for ... abbrechen.
Dass die 83 hier "='N" & i & "'!R3C3:R4C3" nicht reingeht glaube ich nicht.
Man kann ja auch mal zusätzliche Zeilen Programmieren, Excel hat sich zuweilen eng wenn die Bereiche erst dann zusammengesetzt werden, wenn sie gebraucht werden:
For i = 83 To 85 Step 1
ActiveChart.SeriesCollection.NewSeries
Sheets("N" & i).Select
Kette="='N" & i & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(i - 79).XValues = Kette
Kette="='N" & i & "'!R3C4:R4C4"
ActiveChart.SeriesCollection(i - 79).Values = Kette
Kette="='N" & i & "'!R1C2:R1C4"
ActiveChart.SeriesCollection(i - 79).Name = Kette
Next i
Es wird eventuell auch daran liegen, dass 83-79=4 ist und zuvor die 3. Datenreihe fehlt?
Anzeige
AW: Diagramme mit VBA erstellen
09.09.2004 20:31:16
Thomas Scher
Hallo Andre ,
ich habe mir gerade eine Excel Tab gemacht mit einfachen Zahlen !!
Das Macro läuft. Es gibt nur ein Problem mit dem namen des Diagramms, da es immer gleich lautet habe ich zum Test so Gemacht
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Test Diagramm" & i
Dann noch dieses hier :
ActiveChart.SeriesCollection(2).XValues = "='N" & i + 1 & "'!R3C3:R4C3"
Ich habe nur bis Sheet 88 gemacht und da er + 1 macht ist kein Sheet mehr da...
Komisch wie gesagt er geht bei mir ..
gruß
Thomas
AW: Diagramme mit VBA erstellen
10.09.2004 09:26:43
Piotr
Guten Morgen Zusammen,
danke, dass Ihr Euch mit meinem Problem beschäftigt. Doch irgendwie bin ich zu blöd. Es funktioniert nicht. . Manuell die dritte Gerade einzufügen aus dem Sheet N82 ist kein Problem, nur diese "verflixte" Schleife. Was mache ich falsch? Anbei nochmal mein modifiziertes Makro:

Sub Diagramm_erstellen()
' Makro am 09.09.2004 von Piotr aufgezeichnet
Sheets("N80").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("N80").Range("D21"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection(1).XValues = "='N80'!R3C3:R4C3"
ActiveChart.SeriesCollection(1).Values = "='N80'!R3C4:R4C4"
ActiveChart.SeriesCollection(1).Name = "='N80'!R1C2:R1C4"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "='N81'!R3C3:R4C3"
ActiveChart.SeriesCollection(2).Values = "='N81'!R3C4:R4C4"
ActiveChart.SeriesCollection(2).Name = "='N81'!R1C2:R1C4"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "='N82'!R3C3:R4C3"
ActiveChart.SeriesCollection(3).Values = "='N82'!R3C4:R4C4"
ActiveChart.SeriesCollection(3).Name = "='N82'!R1C2:R1C4"
' PIOTR: Bis hierhin gib es keine Probleme
For i = 83 To 85
'PIOTR: Dies habe ich nur eingeführt, um zu schauen, ob der Sheetname erkannt wird.
Sheets("tabelle1").Select
Cells(1, 1) = Sheets("N" & i).Name
'PIOTR: Das funktioniert soweit auch ganz gut
'PIOTR: Ab hier gibt es Probleme !
ActiveChart.SeriesCollection(i - 79).XValues = "='N" & i & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(i - 79).Values = "='N" & i + 1 & "'!R3C3:R4C3"
ActiveChart.SeriesCollection(i - 79).Name = "='N" & i + 1 & "'!R3C3:R4C3"
Next i
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "N 80"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x-achse"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y-achse"
End With
Charts.Add
End Sub

Anzeige
AW: Diagramme mit VBA erstellen
10.09.2004 14:18:26
Piotr
Übrigens
in dieser Zeile sagt der Debugger: Laufzeitfehler 91: "Objektvariable oder with Blockvariable nicht festgelegt"
ActiveChart.SeriesCollection(4).XValues = "='N" & i & "'!R3C3:R4C3"
Vielleicht hilft dass weiter
Gruß, Piotr
AW: Diagramme mit VBA erstellen
12.09.2004 08:00:05
andre
Hallo Pjotr,
lege mal in die Zeile For i... einen Haltepunkt (F9) und gehe von da an den code im Einzelschritt (F8) durch. Wenn Der Fehler kommt, ändere i-79 in den entsprechenden Wert, zuerst 4, und drücke weiter (F8). Wenn der Fehler wieder kommt ändere dann den hinteren Teil in ...N83.... Wenn der Fehler wieder kommt liegt es nicht an der Schleife.
Grüße, Andre
Anzeige

35 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige