Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Punktdiagramm erzeugen auf neuem Datenblatt
#1
Hallo,
mein Vorgänger hat aus einer Tabelle manuell per "Daten auswählen" ein Punktdiagramm erzeugt welches ich durch einen VBA Code automatisch beschrifte. Dabei habe ich den unten stehenden Code selbst nachgebaut, da ich noch relativ neu im Bereich VBA bin.

Option Explicit

Sub BeschriftungSternenhimmel()

Dim lngPunkt As Long
Dim data As Worksheet

Set data = ActiveWorkbook.Worksheets("Gehaltsdaten")

   With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
      .ApplyDataLabels
      For lngPunkt = 1 To .Points.Count
         .Points(lngPunkt).DataLabel.Text = Left(data.Cells(lngPunkt + 2, 2), 1) & " " & Left(data.Cells(lngPunkt + 2, 3), 1)
      Next lngPunkt

   End With

End Sub

Nun soll jedoch das Punkt-Diagramm ebenfalls automatisch erzeugt werden. Dabei soll die X-Werte das Alter widerspiegeln (Spalte G) und die Y-Werte das Einkommen (Spalte AC). Es soll in ein neues Datenblatt eingefügt werden. Könnte mir jemand helfen, wie ich das Diagramm erzeuge?

Bin über jegliche Hilfe dankbar!
Antworten Top
#2
Kurzes Update, ich habe es geschafft, ein Punktdiagramm zu erzeugen. Jedoch schaffe ich es nicht, die Datenpunkte wie gewünscht zu beschriften. Der Aktuelle Stand ist nun:


Code:
Sub ErzeugungGraph()

Dim lngPunkt As Integer
Dim ZeileMax As Integer
Dim data As Worksheet
Set data = ActiveWorkbook.Worksheets("Gehaltsdaten")

Application.ScreenUpdating = False
Worksheets("Gehaltsdaten").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=data.Range("A3:AC3000")
ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = "=Gehaltsdaten!$G$3:$G$3000"
    ActiveChart.SeriesCollection(1).Values = "=Gehaltsdaten!$AC$3:$AC$3000"
    ActiveChart.SeriesCollection(1).Name = "=Gehaltsdaten!$B$3:$B$3000"
  
ActiveChart.location Where:=xlLocationAsObject, _
   Name:=ThisWorkbook.Worksheets(4).Name
  
    With ActiveChart
       
        .HasLegend = False
        .Parent.Height = 600
        .Parent.Width = 1200
        .HasTitle = True
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Alter"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "JEK 35H"
        .Axes(xlValue).MinimumScale = 0
        .Axes(xlCategory).MaximumScale = 80
       
       
    End With
     
  
   ZeileMax = data.Cells(Rows.Count, 2).End(xlUp).Row
   With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
      .ApplyDataLabels
      For lngPunkt = 1 To ZeileMax
         .Points(lngPunkt).DataLabel.Text = Left(data.Cells(lngPunkt + 2, 2), 1) & " " & Left(data.Cells(lngPunkt + 2, 3), 1)
      Next lngPunkt
   End With
End Sub
Antworten Top
#3
Hallöchen,

wenn Du den Makrorekorder laufen lässt, wird das da nicht mit aufgezeichnet?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste