Herbers Excel-Forum - das Archiv
Diagramm erstellen für 97 Tabellen
Informationen und Beispiele zu den hier genannten Dialog-Elementen:

|
Betrifft: Diagramm erstellen für 97 Tabellen
von: golem
Geschrieben am: 06.11.2003 10:05:36
HAllo,
gestern bekam ich zu dem Problem: "Wie erstellt man (mit oder ohne VBA) für 97 Tabellen je ein Diagramm. Die Datenquellen der Diagramme sind immer dieselben Zellen des jeweiligen Tabellenblattes."
Ich bekam auch eine Antwort (Danke Guenther!), leider funktioniert das markieren aller Blätter und das Erstellen des Diagrammes nicht, da diese Funktion beim Markieren mehrerer Tabellenblätter deaktiviert ist.
Weiß jemand Rat?
mfg
Golem
Betrifft: AW: Diagramm erstellen für 97 Tabellen
von: Dan
Geschrieben am: 06.11.2003 10:45:32
Hallo Goli,
was meinst du genau mit Diagramm ? Dan
Dan dusek@cb.vakjc.cz
Betrifft: AW: Diagramm erstellen für 97 Tabellen
von: golem
Geschrieben am: 06.11.2003 10:55:46
Hallo Dan,
mit Diagramm meine ich ein Diagramm,Chart, Balkenchart,Linienchart oder wie die alle heißen. (Es sollte ein Diagramm sein und kein Diagrammblatt.)
Falls Du die englische Office Version hast, kann ich Dir nicht genau sagen wie das in deiner Version heißt aber laut Wörterbuch chart, diagram oder graph.
gruß
Goli
Betrifft: AW: Diagramm erstellen für 97 Tabellen
von: Dan
Geschrieben am: 06.11.2003 11:28:54
Option Explicit
Sub AddGraphToEachWorksheet()
Dim MyChart As Chart, Wsh As Worksheet
For Each Wsh In Application.ActiveWorkbook.Worksheets
Set MyChart = Charts.Add
With MyChart
.ChartType = xlColumnClustered
.SetSourceData Source:=Wsh.Range("A1:B2"), _
PlotBy:=xlRows
.Location Where:=xlLocationAsObject, Name:=Wsh.Name
' .HasTitle = True
' .ChartTitle.Characters.Text = Wsh.Name
End With
Next Wsh
HasTitle und ChartTitle hat nicht funzt, weiss nicht wieso :-(
Gruss Dich, Dan
Betrifft: AW: Diagramm erstellen für 97 Tabellen
von: golem
Geschrieben am: 06.11.2003 11:41:18
Hi Dan,
funkt leider nicht so richtig...:(
aber thx für Mühen
Betrifft: AW: Diagramm erstellen für 97 Tabellen
von: Dan
Geschrieben am: 06.11.2003 11:44:18
Und was ist daran falsch? Source Range musst du selber andern, das hast du verstanden, oder? D.
Betrifft: Es Funkt zu 80%!
von: golem
Geschrieben am: 06.11.2003 13:23:01
Habe es mittlerweile mit Deiner Hilfe einigermaßen hinbekommen- hatte andere Variablen Namen und dies nicht gemerkt weil ich option explicit lösche...
20% die fehlen: Diagramm verrücken mach ich per macrorec:
ActiveSheet.Shapes.IncrementLeft 2095.5
ActiveSheet.Shapes.IncrementTop 120.75
ActiveSheet.Shapes.ScaleWidth 1.4, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes.ScaleHeight 1.25, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes.ScaleWidth 1.3, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes.ScaleHeight 1.06, msoFalse, _
msoScaleFromTopLeft
Fehler: Objekt unterstützt diese Eigenschaft nicht...?
Betrifft: AW: Es Funkt zu 80%!
von: Dan
Geschrieben am: 06.11.2003 14:27:22
Hallo Goli,
ich habe es anders gemacht und es hat ganz gut gelaufen :
'---------------------------------------------------------
Option Explicit
Sub AddGraphToEachWorksheet()
Dim MyChartObj As ChartObject
Dim MyChartsObjets As ChartObjects
Dim Wsh As Worksheet
Dim MyXAxis As Axis, MyYAxis As Axis
For Each Wsh In Application.ActiveWorkbook.Worksheets
Set MyChartsObjets = Wsh.ChartObjects
Set MyChartObj = MyChartsObjets.Add(Left:=20, Top:=30, Width:=400, Height:=300)
With MyChartObj.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Wsh.Range("A1:B2"), _
PlotBy:=xlRows
.Location Where:=xlLocationAsObject, Name:=Wsh.Name
.HasTitle = True
.ChartTitle.Characters.Text = Wsh.Name
Set MyXAxis = .Axes(Type:=xlCategory)
Set MyYAxis = .Axes(Type:=xlValue)
End With
With MyXAxis
.CrossesAt = 2
.TickLabelSpacing = 1
.TickMarkSpacing = 1
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
With MyYAxis
' die Y-Achse bearbeiten
End With
Next Wsh
End Sub
Betrifft: AW: Es Funkt ganz gut!
von: golem
Geschrieben am: 07.11.2003 09:32:27
Hallo Dan,
DANKE, dass Du weiterhin so hartnäckig an meinem Problem gearbeitet hast!
Nimmst Du die Codes -ao wie ich- erst per MAcrorec auf...wenn nicht woher kennst Du die Befehle? Beim Objektkatalog weiß ich nicht so genau was für was ist.
Wie kann ich das komplette Diagramm auf jeder Tabelle verschieben (falls das im obigen Code enthalten ist , finde ich die Stelle nicht)?
mit With MyYAxis
' die Y-Achse bearbeiten
End With
ist die Beschriftung etc gemeint(, oder?)
Viele Grüsse
Golem
Betrifft: AW: Es Funkt ganz gut!
von: Dan
Geschrieben am: 07.11.2003 13:51:07
Halo Golem, die Position kann man so andern :
(Dan dusek@cb.vakjc.cz)
Sub GraphAddAndPositionAndern()
Dim Wsh As Worksheet ' in disen Sheet wird der Graph zugegeben
Dim ChrtObjts As ChartObjects ' Verweiss auf die ChartObjects Colllection
Dim ChrtObj As ChartObject ' Obj. Var., die auf den neuen Graph verweisen wird
' die Verweiss/Object Vars. anstellen
Set Wsh = ActiveSheet
Set ChrtObjts = Wsh.ChartObjects
Set ChrtObj = ChrtObjts.Add(0, 0, 100, 100) ' neuer Chart Object ist zugegeben worden
' die Position und Masse des Chart Objects anstellen
With ChrtObj
.Left = 150
.Top = 250
.Height = 300
.Width = 400
End With
' die anden Dinge durch andern, mit hilfe der Chart Eigenschafft
With ChrtObj.Chart
End With
End Sub
Betrifft: AW: Es Funkt ganz gut!
von: golem
Geschrieben am: 09.11.2003 01:48:35
Hallo Dan!
Danke nochmals für deine Hilfe!
Werde es gleich mal probieren...