Diagramm verschieben

Hallo zusammen!

Ich erzeuge mit VBA ein Diagramm:

Range(„E2“).Select
Selection.End(xlToRight).Select
Spalte = ActiveCell.Column
Spaltenbuchstabe = Switch(gibt den Buchstaben aus)
Ausblenden = „B“ & letzte_Zeile + 1
Range(Ausblenden).Select
Charts.Add
Diagramm = ActiveChart.Name
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(Kunde(1)).Range(„E4:“ & _
Spaltenbuchstabe & „5“), PlotBy:=xlRows
Linie = „=“ & Kunde(1) & „!R4C5:R4C“ & Spalte
ActiveChart.SeriesCollection(1).Values = [Linie]
Linie = „=“ & Kunde(1) & „!R5C5:R5C“ & Spalte
ActiveChart.SeriesCollection(2).Values = [Linie]
Beschriftung = „=“ & Kunde(1) & „!R4C3“
ActiveChart.SeriesCollection(1).Name = Beschriftung
Beschriftung = „=“ & Kunde(1) & „!R5C3“
ActiveChart.SeriesCollection(2).Name = Beschriftung
ActiveChart.Location Where:=xlLocationAsObject, Name:=Kunde(1)
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = „Soll-Ist-Stunden“
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = „Monat“
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = „Stunden“
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Select
Selection.Position = xlBottom

Das funktioniert soweit ganz gut, das Programm gibt das aus, was ich haben will, auch wenn es nicht das Non-plus-ultra der Programmierkunst ist!

Nur leider setzt er das Diagramm ziemlich mittig in die Excel-Tabelle. Jetzt soll es aber etwa auf Höhe der Zelle „A28“ sein. Wie bekomme ich mein Diagramm darunter? Könnt ihr mir helfen? Vielen Dank im voraus.

Schöne Grüße,
Thorsten

Hi Thorsten,

Range(„E2“).Select
Selection.End(xlToRight).Select
Spalte = ActiveCell.Column
Spaltenbuchstabe = Switch(gibt den Buchstaben aus)
Ausblenden = „B“ & letzte_Zeile + 1
Range(Ausblenden).Select
Charts.Add
Diagramm = ActiveChart.Name
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(Kunde(1)).Range(„E4:“
& _
Spaltenbuchstabe & „5“), PlotBy:=xlRows
Linie = „=“ & Kunde(1) & „!R4C5:R4C“ & Spalte
ActiveChart.SeriesCollection(1).Values = [Linie]
Linie = „=“ & Kunde(1) & „!R5C5:R5C“ & Spalte
ActiveChart.SeriesCollection(2).Values = [Linie]
Beschriftung = „=“ & Kunde(1) & „!R4C3“
ActiveChart.SeriesCollection(1).Name = Beschriftung
Beschriftung = „=“ & Kunde(1) & „!R5C3“
ActiveChart.SeriesCollection(2).Name = Beschriftung
ActiveChart.Location Where:=xlLocationAsObject, Name:=Kunde(1)
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = „Soll-Ist-Stunden“
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text =
„Monat“
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text =
„Stunden“
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Select
Selection.Position = xlBottom

Das funktioniert soweit ganz gut, das Programm gibt das aus,
was ich haben will, auch wenn es nicht das Non-plus-ultra der
Programmierkunst ist!

Vba-Code für Diagramme sieht immer grottenschlecht aus :smile:

Nur leider setzt er das Diagramm ziemlich mittig in die
Excel-Tabelle. Jetzt soll es aber etwa auf Höhe der Zelle
„A28“ sein. Wie bekomme ich mein Diagramm darunter? Könnt ihr
mir helfen? Vielen Dank im voraus.

probier mal sowas da einzubauen:

Activechart.Top=range(„A28“).top
Activechart.left=range(„A28“).left

Gruß
Reinhard

Tip funktioniert nicht

probier mal sowas da einzubauen:

Activechart.Top=range(„A28“).top
Activechart.left=range(„A28“).left

Hallo Reinhard!

Habe dein Tip eingebaut, leider wird mir dann ein Fehler ausgegeben: „Methode oder Datenobjekt nicht gefunden“.

Vielleicht sollte ich mal dazu schreiben ich programmiere mit MS Visual Basic 6.0.

Schönen Gruß,
Thorsten

Eine Lösung
Hallo @ all!

Ich habe eine Lösung:

With Worksheets(Kunde(1))
.ChartObjects(1).Left = .Columns(„A“).Left
.ChartObjects(1).Top = 228
End With

Was die Zahl hinter dem Top aussagt, verstehe ich nicht, ich probiere einfach solange, bis es passt.

Im Übrigen kann man auch mit „.ChartObjects(1).Height = 160“ die Höhe bestimmen.

Wenn ich die Hilfe richtig verstehe kann mit „.ChartObjects(1).width = 160“ die Breite festgelegt werden.

Schönen Gruß,
Thorsten