Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Position eines Rechtecks auslesen

Forumthread: Position eines Rechtecks auslesen

Position eines Rechtecks auslesen
29.03.2009 14:02:05
Alex
Moin,
ich mache grad die ersten Gehversuche mit VBA und bin dabei auf ein Problem gestoßen, das weder der Macrorekorder noch google lösen kann.
Ich möchte eine Funktion programmieren, mittels der ein Rechteck zufallsbasiert über die Tabelle gejagt wird. Dabei soll es sich aber nicht mehr als eine bestimmte Reichweite vom ursprünglichen Punkt entfernen.
Bis jetzt hab ich das Ganze so gelöst, dass ich mit incrementtop und left das Rechteck verschiebe und gleichzeitig Variablen verändere. Eine Variable gibt die Abweichung in der horizontalen an, die andere die Abweichung in der vertikalen.
Soweit funktioniert das auch echt toll, aber ich hatte vor einige (mehr als 100) von diesen Rechtecken zu erschaffen. Da kommt das mit den Variablen natürlich nicht so toll, auch ein Array wär unpraktisch, weil ich die Daten davon irgendwo speichern müsste.
Da kam mir die Idee, die Positionswerte des Rechtecks auszulesen. Nur leider finde ich nirgends den Befehl dazu.
Ich hoffe die Frage war nicht zu dumm, wenn doch, freut euch, dass ihr schlauer seid ;)
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position eines Rechtecks auslesen
29.03.2009 14:15:02
Heinz
Hi,
Rechtecke, wie auch andere Objekte, haben eine Left- und eine
Top-Eigenschaft, die du auslesen kannst.
mfg Heinz
AW: Position eines Rechtecks auslesen
29.03.2009 14:31:53
Alex
Vielen Dank für die schnelle Antwort!
Also geht das mit selection.shaperange.top bzw left
Ich hatte immer irgendwas wie ".positiontop" oder ".positionx" gesucht... Danke!
Anzeige
selection.shaperange.top=großer Mist
29.03.2009 14:52:38
ransi
HAllo
Also geht das mit selection.shaperange.top bzw left
Neeeee !!!!
Sheets("Tabelle1").Shapes(1) .top
oder:
Sheets("Tabelle1").Shapes("Rechteck 1") .top
Du musst nicht selecten.
ransi
;
Anzeige

Infobox / Tutorial

Rechteck-Position in Excel mit VBA auslesen


Schritt-für-Schritt-Anleitung

Um die Position eines Rechtecks in Excel auszulesen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub RechteckPositionAuslesen()
       Dim posTop As Double
       Dim posLeft As Double
    
       ' Position des ersten Rechtecks in Tabelle1 auslesen
       posTop = Sheets("Tabelle1").Shapes(1).Top
       posLeft = Sheets("Tabelle1").Shapes(1).Left
    
       ' Ausgabe der Position
       MsgBox "Top: " & posTop & vbCrLf & "Left: " & posLeft
    End Sub
  4. Führe das Skript aus: Klicke auf das grüne „Play“-Symbol oder drücke F5, um das Makro auszuführen.

Mit dieser Methode kannst du die Top- und Left-Eigenschaften von Rechtecken in Excel direkt abrufen, ohne sie vorher auswählen zu müssen.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Stelle sicher, dass das Rechteck in der angegebenen Tabelle existiert. Überprüfe auch den Namen des Rechtecks, falls du über den Namen darauf zugreifen möchtest.

  • Fehler: „Typ nicht unterstützt“
    Lösung: Achte darauf, dass du die richtige Form (z. B. ein Rechteck) verwendest. Der Code funktioniert nur für Shapes.


Alternative Methoden

Eine alternative Methode, um die Position eines Rechtecks auszulesen, ist die Verwendung von Schleifen, um durch alle Shapes in einer Tabelle zu iterieren:

Sub AlleRechteckePositionAuslesen()
    Dim shp As Shape
    Dim message As String

    For Each shp In Sheets("Tabelle1").Shapes
        If shp.Type = msoShapeRectangle Then
            message = message & shp.Name & ": Top = " & shp.Top & ", Left = " & shp.Left & vbCrLf
        End If
    Next shp

    MsgBox message
End Sub

Dieser Code listet die Position aller Rechtecke in „Tabelle1“ auf.


Praktische Beispiele

  1. Zufällige Bewegung eines Rechtecks: Wenn du ein Rechteck zufallsbasiert verschieben möchtest, kannst du die Top- und Left-Werte mit einer Zufallszahl verändern.

    Sub RechteckZufall()
       Dim shp As Shape
       Set shp = Sheets("Tabelle1").Shapes(1)
    
       shp.Top = shp.Top + Int((10 * Rnd) - 5) ' Zufällige Vertikale Bewegung
       shp.Left = shp.Left + Int((10 * Rnd) - 5) ' Zufällige Horizontale Bewegung
    End Sub
  2. Rechteck an bestimmten Koordinaten platzieren:

    Sub RechteckSetzen()
       Dim shp As Shape
       Set shp = Sheets("Tabelle1").Shapes("Rechteck 1")
    
       shp.Top = 100
       shp.Left = 150
    End Sub

Tipps für Profis

  • Nutze With ... End With, um den Code lesbarer zu gestalten, wenn du mehrere Eigenschaften eines Shapes auslesen oder setzen möchtest:

    With Sheets("Tabelle1").Shapes("Rechteck 1")
       .Top = 50
       .Left = 75
    End With
  • Wenn du oft mit vielen Formen arbeitest, könnte es sinnvoll sein, die Shapes in einer Sammlung oder einem Dictionary zu speichern, um schneller darauf zugreifen zu können.


FAQ: Häufige Fragen

1. Wie kann ich die Position mehrerer Rechtecke gleichzeitig auslesen?
Du kannst eine Schleife verwenden, um durch alle Shapes auf dem Arbeitsblatt zu iterieren und deren Position auszulesen.

2. Gibt es eine Möglichkeit, die Position in einer Zelle anzuzeigen?
Ja, du kannst die Werte direkt in Zellen schreiben, anstatt sie in einer MsgBox anzuzeigen. Zum Beispiel:

Sheets("Tabelle1").Range("A1").Value = shp.Top
Sheets("Tabelle1").Range("B1").Value = shp.Left

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige