Diagramme mit VBA erstellen
 |
Betrifft: Diagramme mit VBA erstellen
von: Piotr
Geschrieben am: 08.09.2004 15:54:08
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
Betrifft: AW: Diagramme mit VBA erstellen
von: andre
Geschrieben am: 08.09.2004 19:40:54
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
 |
Betrifft: AW: Diagramme mit VBA erstellen
von: piotr
Geschrieben am: 09.09.2004 15:36:23
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
Betrifft: AW: Diagramme mit VBA erstellen
von: andre
Geschrieben am: 09.09.2004 16:32:22
Hallo Piotr,
funktioniert es wenn Du rechts die 83 hinschreibst?
Grüße, Andre
Betrifft: AW: Diagramme mit VBA erstellen
von: Piotr
Geschrieben am: 09.09.2004 17:27:15
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
Betrifft: AW: Diagramme mit VBA erstellen
von: Thomas Scher
Geschrieben am: 09.09.2004 19:33:16
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
Betrifft: AW: Diagramme mit VBA erstellen
von: andre
Geschrieben am: 09.09.2004 20:13:33
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?
Betrifft: AW: Diagramme mit VBA erstellen
von: Thomas Scher
Geschrieben am: 09.09.2004 20:31:16
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
Betrifft: AW: Diagramme mit VBA erstellen
von: Piotr
Geschrieben am: 10.09.2004 09:26:43
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
 |
Betrifft: AW: Diagramme mit VBA erstellen
von: Piotr
Geschrieben am: 10.09.2004 14:18:26
Ü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
Betrifft: AW: Diagramme mit VBA erstellen
von: andre
Geschrieben am: 12.09.2004 08:00:05
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
Beiträge aus den Excel-Beispielen zum Thema "Diagramme mit VBA erstellen"