Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Diagramme, xy-Position von Points auslesen

Forumthread: VBA: Diagramme, xy-Position von Points auslesen

VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 09:45:52
Points
Hallo liebe Excel-Experten,
gibt es eine Möglichkeit, die xy-Position eines Objektes in einem Excel Diagramm in VBA auszulesen?
Ich benötige nicht den Wert aus dem Excelblatt, sondern die Koordinaten für die graphische Darstellung im Diagramm. Möchte eine Autoform (ein Rechteck) per Makro genau an einen Punkt eines xy-Diagramms legen. Finde die Eigenschaft nicht in der Hilfe.
Vielen Dank für jeden Hinweis!
Gruß Christian
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 10:56:30
Points
hallo Christian,
du kannst ja alle Datenpunkte mit einer Schleife ansprechen,
dann hat man ja automatisch die Position...
soll das so aussehen...
Userbild
gruß Herbert
AW: VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 11:25:39
Points
Hallo Herbert,
vielen Dank für die Antwort.
Habe meine Datei mal hochgeladen: https://www.herber.de/bbs/user/26020.xls
Dein Bild sieht schon mal gut aus. In meinem Fall soll jeweils die Differenz zweier benachbarter Datenpunkte die Kantenlänge u. Höhe des Rechtecks ergeben (dann ergibt sich eine Perlenschnur von Rechtecken, die immer mit den Ecken aneinanderstoßen).
Gruß Christian
Anzeige
AW: VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 13:26:02
Points
hallo Christian,
das Bild sieht überhaupt nicht gut aus...
dein Wunsch ist doch etwas anders gelagert...
beim ersten Rechteck hat man ja die Position,
dadurch hat man auch die Position des nächsten...
jetzt muß man nur noch sehen,wie man die Grösse
der Rechtecke errechnet...und dann in einer Schleife einfügen...
gruß Herbert
Anzeige
AW: VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 18:30:07
Points
ich hab dir für ein eigebettetes Diagramm einen Ansatz gemacht...


Option Explicit
Sub recht_einf()
Dim sh As Worksheet
Set sh = Sheets("Tabelle1")
Dim h!, w!, l!, t!, s%, x!, y!
Dim shp As Shape
ActiveSheet.Unprotect
l = 206.25
y = 296.25
x = sh.[c11]
s = 3
Application.ScreenUpdating = False
With ActiveSheet
    Do Until sh.Cells(10, s) = ""
          w = sh.Cells(10, s)
          h = sh.Cells(11, s)
Set shp = .Shapes.AddShape(msoShapeRectangle, l, t, w, h)
           With shp
               t = y + (x - .Height) - 0.3755
               .Top = t
               x = 0
               .Fill.ForeColor.SchemeColor = 3
               l = .Left + .Width + 1.124
               y = .Top - .Height
               x = .Height
           End With
         s = s + 1
    Loop
End With
ActiveSheet.Protect
Application.ScreenUpdating = True
Set shp = Nothing
End Sub

     
https://www.herber.de/bbs/user/26043.xls
gruß Herbert
Anzeige
AW: VBA: Diagramme, xy-Position von Points auslesen
25.08.2005 20:07:43
Points
ein Ansatz für ein Diagrammblatt,weil es dafür geeigneter ist...
https://www.herber.de/bbs/user/26048.xls
gruß Herbert
AW: VBA: Diagramme, xy-Position von Points auslesen
29.08.2005 12:22:41
Points
Hallo Herbert,
Vielen Dank für Deine Hilfe. Ich habe die Aufgabe zwar anders umgesetzt, aber die entscheidene Idee habe ich aus deinem Lösungsvorschlag. Da ich nämlich die Zeichenkoodinaten nicht direkt als Eigenschaft der Points-Objekte abgreifen kann, berechne ich die Koordinaten über einen 3-Satz aus der Breite/Höhe der Plotarea und den Maximal/Minimalwerte der Skala.
Habe meine Lösung zur Info noch mal hochgeladen.
https://www.herber.de/bbs/user/26129.xls
Vielen Dank!
Gruß Christian
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

XY-Position von Punkten in Excel-Diagrammen mit VBA auslesen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade das Diagramm, von dem du die XY-Positionen der Datenpunkte auslesen möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Projektfenster mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“.
    • Wähle „Einfügen“ > „Modul“.
  4. Füge den folgenden Code ein:

    Option Explicit
    
    Sub XYPositionAuslesen()
       Dim sh As Worksheet
       Dim chartObj As ChartObject
       Dim point As Point
       Dim i As Integer
    
       Set sh = ThisWorkbook.Sheets("Tabelle1") ' Passe den Namen des Blattes an
       Set chartObj = sh.ChartObjects(1) ' Wähle das erste Diagramm aus
    
       For i = 1 To chartObj.Chart.SeriesCollection(1).Points.Count
           Set point = chartObj.Chart.SeriesCollection(1).Points(i)
           Debug.Print "Punkt " & i & ": X = " & point.DataLabel.Left & ", Y = " & point.DataLabel.Top
       Next i
    End Sub
  5. Führe das Makro aus:

    • Drücke F5 oder gehe zu „Run“ > „Run Sub/UserForm“.
    • Die XY-Positionen der Punkte werden im Direktfenster angezeigt.

Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“

    • Lösung: Stelle sicher, dass der Name des Arbeitsblattes und der Diagrammindex korrekt sind. Überprüfe die Schreibweise.
  • Fehler: „Diagramm hat keine Punkte“

    • Lösung: Überprüfe, ob dein Diagramm tatsächlich Datenpunkte enthält.
  • Fehler: Debug.Print gibt keine Werte aus

    • Lösung: Stelle sicher, dass das Direktfenster im VBA-Editor geöffnet ist (Strg + G).

Alternative Methoden

Wenn du die XY-Positionen ohne VBA auslesen möchtest, kannst du auch die Formeln in Excel verwenden:

  1. Verwende die Funktion INDEX in Kombination mit VERGLEICH, um die Werte direkt aus den Daten zu extrahieren.
  2. Erstelle ein Diagramm und füge manuell Datenlabels hinzu, die die Koordinaten anzeigen.

Praktische Beispiele

Hier sind einige Beispiele, wie du die XY-Positionen in verschiedenen Szenarien nutzen kannst:

  • Um ein Rechteck an spezifischen Punkten zu zeichnen: Verwende die ausgelesenen Koordinaten, um Autoformen an den gewünschten Positionen einzufügen.
  • Zur Visualisierung von Datenveränderungen: Nutze die XY-Positionen, um die Änderungen zwischen benachbarten Punkten grafisch darzustellen.

Tipps für Profis

  • Optimierung des Codes: Verwende Error-Handling, um unerwartete Fehler abzufangen.
  • Automatisierung: Setze das Makro so auf, dass es bei bestimmten Ereignissen (z.B. beim Öffnen der Datei) automatisch ausgeführt wird.
  • Dokumentation: Kommentiere deinen VBA-Code ausführlich, damit du später leichter darauf zugreifen kannst.

FAQ: Häufige Fragen

1. Wie kann ich die Positionen von mehreren Diagrammen auslesen?
Du kannst eine Schleife verwenden, um durch alle Diagramme in einem Arbeitsblatt zu iterieren.

2. Ist es möglich, die Koordinaten in eine Excel-Tabelle zu exportieren?
Ja, du kannst die Werte in eine Tabelle schreiben, indem du Cells(i, j).Value verwendest, um die Daten in die gewünschten Zellen zu speichern.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige