Frage, wie kann ich die top/left Eigenschaft bei einem Shape ohne selection per VBA festlegen?
Grüssle Dietlinde
Sub Makro1()
ActiveSheet.Shapes("Rectangle 1").Top = 25
ActiveSheet.Shapes("Rectangle 1").Left = 125
End Sub
Um die Top- und Left-Eigenschaften eines Shapes in VBA festzulegen, kannst du die folgenden Schritte befolgen:
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
Klicke im Projektfenster auf das entsprechende Arbeitsblatt.
Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "Module" klickst und "Einfügen" > "Modul" wählst.
Kopiere den folgenden Code in das Modul:
Sub SetShapePosition()
ActiveSheet.Shapes("Rectangle 1").Top = 25
ActiveSheet.Shapes("Rectangle 1").Left = 125
End Sub
Ersetze "Rectangle 1" durch den Namen deines Shapes.
Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.
Fehler: "Shape not found"
Fehler: Ungültige Position
Top und Left innerhalb der Grenzen des Arbeitsblatts liegen. Verwende Werte, die sowohl positiv als auch innerhalb der sichtbaren Fläche liegen.Eine weitere Methode, um die Position eines Shapes festzulegen, besteht darin, die Position relativ zu einer Zelle zu bestimmen. Hier ist ein Beispiel:
Sub AlignShapeToCell()
With ActiveSheet.Shapes("Logo")
.Top = Range("H1").Top
.Left = Range("H1").Left + Range("H1").Width - .Width
End With
End Sub
Hier wird das Shape "Logo" rechtsbündig zu der Zelle H1 ausgerichtet.
Positionierung eines Rechtecks:
Sub PositionRectangle()
ActiveSheet.Shapes("Rectangle 2").Top = 50
ActiveSheet.Shapes("Rectangle 2").Left = 150
End Sub
Positionierung eines Logos:
Sub PositionLogo()
ActiveSheet.Shapes("Logo").Top = 10
ActiveSheet.Shapes("Logo").Left = Range("H1").Left + Range("H1").Width - ActiveSheet.Shapes("Logo").Width
End Sub
Diese Beispiele zeigen, wie du die Top- und Left-Werte für Shapes in Excel VBA anpassen kannst.
Nutze die ActiveSheet.Shapes-Sammlung, um auf mehrere Shapes gleichzeitig zuzugreifen. Zum Beispiel:
For Each s In ActiveSheet.Shapes
s.Top = s.Top + 10 ' Verschiebe alle Shapes um 10 nach unten
Next s
Experimentiere mit den Eigenschaften TopLeftCell und BottomRightCell, um Shapes an bestimmten Zellpositionen zu verankern.
1. Wie kann ich die Größe eines Shapes in VBA ändern?
Du kannst die Width und Height Eigenschaften verwenden:
ActiveSheet.Shapes("Rectangle 1").Width = 100
ActiveSheet.Shapes("Rectangle 1").Height = 50
2. Was ist der Unterschied zwischen Top und TopLeftCell?
Top gibt die vertikale Position des Shapes auf dem Arbeitsblatt an, während TopLeftCell die oberste linke Zelle angibt, in der sich das Shape befindet.