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

Shapes neu ausrichten und positionieren

Forumthread: Shapes neu ausrichten und positionieren

Shapes neu ausrichten und positionieren
11.02.2019 12:23:25
Jens
Hallo Excel-Fangemeinde,
ich muss öfter mal meine Shapes neu anordnen und dachte mir,
dass das auch sicher mit Makros funktionieren sollte.
Ein neues Shape an einer gewünschten Stelle über x Zellen/Spalten zu übernehmen
funktioniert (siehe Makro in der Beispielmappe), aber bereits bestehende neu auszurichten leider (noch nicht).
Ich dachte mir, dass man am besten die Infos aus dem Alternativtext auslesen
und danach neu positionieren könnte.
Wer kann mir hier helfen?
Vielen Dank
https://www.herber.de/bbs/user/127573.xlsm
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes neu ausrichten und positionieren
11.02.2019 16:02:21
Piet
Hallo Jens
du hast Glück das ich deinen Trhead vorm Urlaub noch gesehen habe. Unten eine Datei. Damit kannst du Shapes auflisten, die Daten nach rechts kopieren, neue Werte einschreiben, und alle per Button ausrichten. Ich kann aber nichts maher anpassen, bin gleich weg!
Probier es vom Beispiel aus, oder kopiere dir die Makros in deine Datei. ......
Mfg Piet
https://www.herber.de/bbs/user/127577.xlsm
Anzeige
AW: Shapes neu ausrichten und positionieren
12.02.2019 07:32:04
Jens
Moin Piet (hört sich Norddeutsch an ;-)),
wahrscheinlich bist du schon im Urlaub (Neid … ;-)).
Das ist schon einmal ein guter Start, trifft aber noch nicht genau den Kern.
Mit diesen Makros kann ich die Shapes "Punkt genau" platzieren, aber das passt nicht mit
den Spaltenbreiten zusammen - gerade auch dann, wenn man die Spalten links und rechts ggf.
auch noch während der Bearbeitung ändert.
In meinem Beispielmakro kann ein neues Shape genau in einer Range positioniert werden:

Set Rg = Range("B12:D13")
Set shp = .Shapes.AddShape(msoShapeBevel, Rg.Left, Rg.Top, _
Rg.Width, Rg.Height)

Dann ist es egal, wie breit oder wie schmal die Spalten vor oder nach dem Einfügen des
Shapes waren, oder werden.
Wie bekommt man das mit bestehenden Shapes hin?
Gruß
Jens
Anzeige
Anzeige

Infobox / Tutorial

Shapes neu ausrichten und positionieren in Excel


Schritt-für-Schritt-Anleitung

Um Shapes in Excel neu auszurichten und zu positionieren, kannst Du die folgenden Schritte befolgen:

  1. Makro erstellen: Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject" > "Einfügen" > "Modul".

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub ShapesNeuAusrichten()
       Dim shp As Shape
       Dim Rg As Range
    
       Set Rg = Range("B12:D13") ' Definiere die Range
       Set shp = ActiveSheet.Shapes.AddShape(msoShapeBevel, Rg.Left, Rg.Top, _
           Rg.Width, Rg.Height)
    
       ' Beispiel für das Positionieren eines bestehenden Shapes
       For Each shp In ActiveSheet.Shapes
           shp.Top = Rg.Top + 10 ' Beispiel für Anpassung
           shp.Left = Rg.Left + 10
       Next shp
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: Shapes erscheinen nicht an der gewünschten Position

    • Lösung: Überprüfe den Range-Bereich in Deinem Makro. Stelle sicher, dass die Zellen korrekt definiert sind.
  • Fehler: Makro funktioniert nicht in Excel Online

    • Lösung: Stelle sicher, dass Du Excel für Desktop verwendest, da VBA-Makros nicht in der Online-Version von Excel unterstützt werden.

Alternative Methoden

Falls Du keine VBA-Makros verwenden möchtest, kannst Du Shapes auch manuell ausrichten:

  1. Shapes auswählen: Halte die STRG-Taste gedrückt und klicke auf die Shapes, die Du ausrichten möchtest.
  2. Formatieren: Gehe zu Format > Anordnen und wähle eine der Ausrichtungsoptionen (z.B. Oben ausrichten, Links ausrichten).

Praktische Beispiele

Hier sind einige Beispiele, wie Du Shapes präzise positionieren kannst:

  • Beispiel 1: Um ein neues Shape in einer definierten Range zu platzieren:

    Set Rg = Range("A1:B2")
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, Rg.Left, Rg.Top, _
       Rg.Width, Rg.Height)
  • Beispiel 2: Positioniere alle Shapes in einer bestimmten Spalte:

    Dim col As Integer
    col = 2 ' Beispiel: Spalte B
    For Each shp In ActiveSheet.Shapes
       shp.Left = Cells(1, col).Left
    Next shp

Tipps für Profis

  • Nutze die Gruppenfunktion: Wenn Du mehrere Shapes hast, gruppiere sie, um die Positionierung zu vereinfachen.
  • Verwende relative Positionen: Wenn Du Shapes dynamisch anpassen musst, arbeite mit relativen Positionen basierend auf Zellen, die sich ändern können.
  • Testen auf verschiedenen Bildschirmauflösungen: Überprüfe, ob die Positionierung auf verschiedenen Bildschirmauflösungen und Druckformaten konsistent bleibt.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Größe eines Shapes dynamisch anpassen?
Antwort: Du kannst die Width und Height Eigenschaften des Shapes in Deinem Makro anpassen, um die Größe zu ändern.

2. Frage
Sind VBA-Makros in Excel Online verfügbar?
Antwort: Nein, VBA-Makros funktionieren nur in der Desktop-Version von Excel. In Excel Online stehen sie nicht zur Verfügung.

3. Frage
Kann ich Shapes automatisch ausrichten, wenn ich die Spaltenbreite ändere?
Antwort: Ja, dies erfordert jedoch ein komplexeres VBA-Skript, das auf Änderungsevents reagiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige