Da ich auch lange in diesem Forum nach einer Lösung gesucht habe, sie aber nicht gefunden habe, möchte ich euch meinen Tip nicht vorenthalten. Wenn mir vielleicht jemand noch sagen kann, ob man auf Artikel im Archiv anworten kann, würde ich die Lösung auch gerne dort noch verbreiten, da doch einige User danach gefragt haben.
Mein Problem war das Zeichnen eines Shapes genau auf den Datenpunkt eines X/Y-Diagramms und das habe ich jetzt so gelöst:
*****************************************************************
* Plotarea ermitteln (Größe ohne Achsenbeschriftung!)
*****************************************************************
IH = ActiveChart.PlotArea.InsideHeight
IW = ActiveChart.PlotArea.InsideWidth
IL = ActiveChart.PlotArea.InsideLeft
IT = ActiveChart.PlotArea.InsideTop
XWert = 25 'X-Wert aus Tabelle für Diagramm =
YWert = 25 'Y-Wert aus Tabelle für Diagramm
XAbstand = IW / 100 * XWert 'X-Wert für eine Einheit im Diagramm (Umrechnung)
YAbstand = IH / 100 * YWert 'Y-Wert für eine Einheit im Diagramm (Umrechnung)
'X/Y-Achse bestehen aus 100 Einheiten
XAbst = XWert / 2 'Hälfter der Größe von Form für X-Rückverschiebung
YAbst = YWert / 2 'Hälfter der Größe von Form für Y-Rückverschiebung
*****************************************************************
* Shape einfügen
*****************************************************************
ActiveChart.Shapes.AddShape(msoShapeRectangle, IL + XAbstand, IT + YAbstand, _
XWert, YWert).Select 'So wird Rechteck auf dem linken oberen Eckpunkt auf den Datenpunkt gezeichnet
ActiveChart.Shapes.AddShape(msoShapeRectangle, IL + XAbstand - XAbst, IT + YAbstand - YAbst, _
XWert, YWert).Select 'So wird Rechteck auf den Mittelpunkt auf den Datenpunkt gezeichnet
Selection.ShapeRange.Line.Weight = 0.25
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 44
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Gruß
Burkhard