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

Position der Diagramme

Position der Diagramme
23.09.2004 11:14:54
Ryu_Hoshi
Hallo zusammen!
Ich mache einen Macro der 4 Diagramme in ein Excel Blatt einfügt. Und zwar soll Diagramm 1 von E3 bis I20 gehen, Diagramm 2 von K3 bis O20, der Dritte
E22 bis I39 und der Vierte K22 bis O39.
Hier erstmal der Vba-code des ersten:

Sub Macro1()
' Macro6 Macro
' Macro recorded 26.08.2004 by SCHELLWA
Application.ScreenUpdating = False
Charts.Add
ActiveChart.ChartType = xlCylinderColClustered
ActiveChart.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
"A50:G50,A52:G52"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"Analyse des letzten Monats"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Statusverteilung in %"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
ActiveChart.HasDataTable = False
ActiveSheet.Shapes("Chart 1").IncrementLeft 208.5
ActiveSheet.Shapes("Chart 1").IncrementTop -216.75
ActiveSheet.Shapes("Chart 1").ScaleWidth 0.65, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Chart 1").ScaleHeight 0.9, msoFalse, msoScaleFromTopLeft
'ActiveSheet.Shapes("Chart 1").Height (320)
'ActiveSheet.Shapes("Chart 1").Width (320)
'ActiveSheet.Shapes("Chart 1").Top (0)
'ActiveSheet.Shapes("Chart 1").Left (20)
Application.ScreenUpdating = True
End Sub

Wie man sieht ist es immer nur der relative Bezug und ich würde es gerne als absoluten Bezug stehen haben, aber wie? Ich habe in den letzten paar Zeilen des Codes dies schon versucht, bekomme aber immer Fehlermeldung. "Object doesnt support this method or property". Wie würdet ihr das machen?
mit freundlichen Grüssen
Waldemar

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position der Diagramme
Ulf
With ActiveSheet
.ChartObjects("Chart 1").Height = 100
.ChartObjects("Chart 1").Width = 200
End With
Ulf
AW: @ Ulf
Ryu_Hoshi
Danke Ulf! Jetzt weiss ich wie das geht. Ich muss jetzt nur noch die richtigen Werte herausfinden. Aber das ist kein grosses Problem
Ich habs geschafft
Ryu_Hoshi
So habs hingekriegt. Och poste mal den code hinein für den Fall dass dies jemand gebrauchen könnte:
Option Explicit

Sub Macro1()
' Macro6 Macro
' Macro recorded 26.08.2004 by SCHELLWA
Application.ScreenUpdating = False
Charts.Add
ActiveChart.ChartType = xlCylinderColClustered
ActiveChart.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
"A50:G50,A52:G52"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"Analyse des letzten Monats"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Statusverteilung in %"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
ActiveChart.HasDataTable = False
With ActiveSheet
.ChartObjects("Chart 1").Height = 260
.ChartObjects("Chart 1").Width = 300
.ChartObjects("Chart 1").Top = 35
.ChartObjects("Chart 1").Left = 600
End With
Application.ScreenUpdating = True
End Sub


Sub Macro2()
' Macro2 Macro
' Macro recorded 27.08.2004 by SCHELLWA
Application.ScreenUpdating = False
Charts.Add
ActiveChart.ChartType = xlCylinderColClustered
ActiveChart.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
"A50:G50,A51:G51"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"Analyse des letzten Monats"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Statusverteilung"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
ActiveChart.HasDataTable = False
With ActiveSheet
.ChartObjects("Chart 2").Height = 260
.ChartObjects("Chart 2").Width = 300
.ChartObjects("Chart 2").Top = 35
.ChartObjects("Chart 2").Left = 240
End With
Application.ScreenUpdating = True
End Sub


Sub Macro3()
' Macro5 Macro
' Macro recorded 27.08.2004 by SCHELLWA
Application.ScreenUpdating = False
Charts.Add
ActiveChart.ChartType = xlCylinderColClustered
ActiveChart.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
"A45:E45,A47:E47"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"Analyse des letzten Monats"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Prioritätsverteilung in %"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
ActiveChart.HasDataTable = False
With ActiveSheet
.ChartObjects("Chart 3").Height = 255
.ChartObjects("Chart 3").Width = 300
.ChartObjects("Chart 3").Top = 324
.ChartObjects("Chart 3").Left = 600
End With
Application.ScreenUpdating = True
End Sub


Sub Macro4()
Application.ScreenUpdating = False
Charts.Add
ActiveChart.ChartType = xlCylinderColClustered
ActiveChart.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
"A45:E45,A46:E46"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"Analyse des letzten Monats"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Prioritätsverteilung"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
ActiveChart.HasDataTable = False
With ActiveSheet
.ChartObjects("Chart 4").Height = 255
.ChartObjects("Chart 4").Width = 300
.ChartObjects("Chart 4").Top = 324
.ChartObjects("Chart 4").Left = 240
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Position der Diagramme
Reinhard
Hi Waldemar,
was hälst du hiervon?(ungetestet)
Option Explicit

Sub diag()
Application.ScreenUpdating = False
Call Macro5("A50:G50,A52:G52", "Statusverteilung in %", 260, 300, 35, 600)
Call Macro5("A50:G50,A51:G51", "Statusverteilung", 260, 300, 35, 240)
Call Macro5("A45:E45,A47:E47", "Prioritätsverteilung in %", 255, 300, 324, 600)
Call Macro5("A45:E45,A46:E46", "Prioritätsverteilung", 255, 300, 324, 240)
Application.ScreenUpdating = True
End Sub


Sub Macro5(rang As String, tex As String, h As Integer, w As Integer, t As Integer, l As Integer)
Charts.Add
With ActiveChart
.ChartType = xlCylinderColClustered
.SetSourceData Source:=Sheets("Analyse des letzten Monats").Range( _
rang), PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:="Analyse des letzten Monats"
.HasTitle = True
.ChartTitle.Characters.Text = tex
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
.Axes(xlCategory).CategoryType = xlAutomatic
.HasDataTable = False
.Height = h
.Width = w
.Top = t
.Left = l
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Position der Diagramme
Ryu_Hoshi
Hallo Reinhard. Das klingt gut. Ich probier das mal morgen aus und sag dir dann Bescheid!
AW: Position der Diagramme
Ryu_Hoshi
SO jetzt hab ich das mal ausprobiert, aber ich bekomme einen Fehler bei der ZEile ".Height = h" Liegt es vielleicht daran dass nirgendwo steht (oder ich aknns zumindest nicht erkennen) wie gross "h" ist?
AW: Position der Diagramme
Reinhard
Hi Waldemar,
den Fehler mit Heigtht habe ich korrigiert, aber es klappt noch nicht.
Alle Diagramme werden gezeichnet, aber übereinander, man sieht nur das oberste:-(
Siehe: https://www.herber.de/bbs/user/11271.xls
mit nachfolgendem Code.
Gruß
Reinhard

Option Explicit
Sub diag()
Dim n As Integer
Dim vorh As Boolean
Application.ScreenUpdating = False
For n = 1 To Sheets.Count
If Sheets(n).Name = "Verteilung" Then vorh = True
Next n
Application.DisplayAlerts = False
If vorh = True Then Sheets("Verteilung").Delete
Application.DisplayAlerts = True
Charts.Add
ActiveChart.Name = "Verteilung"
Call Macro5("A50:G50,A52:G52", "Statusverteilung in %", 260, 300, 35, 600)
Call Macro5("A50:G50,A51:G51", "Statusverteilung", 260, 300, 35, 240)
Call Macro5("A45:E45,A47:E47", "Prioritätsverteilung in %", 255, 300, 324, 600)
Call Macro5("A45:E45,A46:E46", "Prioritätsverteilung", 255, 300, 324, 240)
Application.ScreenUpdating = True
End Sub
Sub Macro5(rang As String, tex As String, h As Integer, w As Integer, t As Integer, l As Integer)
With ActiveChart
.ChartType = xlCylinderColClustered
.SetSourceData Source:=Worksheets(1).Range( _
rang), PlotBy:=xlColumns
.Location xlLocationAutomatic
.HasTitle = True
.ChartTitle.Text = tex
.ChartTitle.Characters.Text = tex
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
.Axes(xlCategory).CategoryType = xlAutomatic
.HasDataTable = False
.PlotArea.Height = h
.PlotArea.Width = w
.PlotArea.Top = t
.PlotArea.Left = l
End With
End Sub

Anzeige
AW: Position der Diagramme
Ryu_Hoshi
HAllo Reinhard! Danke für deine Bemühungen. Wenn wir es nicht schaffen ist es nicht so schlimm dann mache ich halt wie bisher, hauptsache es läuft :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige