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 
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