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

Shape in Zellen positionieren

Forumthread: Shape in Zellen positionieren

Shape in Zellen positionieren
Gregor
Hallo zusammen
Mit folgendem Code setze ich Shapes in der Spalte A Zeilen 4 bis 7 (es können auch mehr sein).
Sub test()
With Sheets("Tabelle1")
.Cells(4, 2).Value = "Zeile 4"
Set shp = .Shapes.AddShape(msoShapeOval, 40, 40, 9.75, 9.75)
shp.Fill.ForeColor.SchemeColor = 5
shp.Name = "Ellipse 1"
.Cells(5, 2).Value = "Zeile 5"
Set shp = .Shapes.AddShape(msoShapeOval, 40, 53, 9.75, 9.75)
shp.Fill.ForeColor.SchemeColor = 4
shp.Name = "Ellipse 2"
.Cells(6, 2).Value = "Zeile 6"
Set shp = .Shapes.AddShape(msoShapeOval, 40, 66, 9.75, 9.75)
shp.Fill.ForeColor.SchemeColor = 2
shp.Name = "Ellipse 3"
.Cells(7, 2).Value = "Zeile 7"
Set shp = .Shapes.AddShape(msoShapeOval, 40, 79, 9.75, 9.75)
shp.Fill.ForeColor.SchemeColor = 3
shp.Name = "Ellipse 4"
End With
End Sub

Ich stelle fest, dass diese manchmal von dieser Position abweichen, das heisst nicht in der gewünschten Zelle (A4, usw) positioniert werden.
Wie kann ich die Shapes zellbezogen, zB rechts, in der Mitte oder links einer definierten Zelle positionieren?
Vielen Dank
Gregor
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Shape in Zellen positionieren
26.08.2011 10:04:55
Luschi
Hallo Grogor,
Du mußt die Einstellung des Spapes von der Zellposition abhängig machen:

Dim ws As Worksheet, rg As Range, shp As Shape
Set ws = ThisWorkbook.Worksheets("Tabelle1")
With ws
Set rg = ws.Cells(4, 2)
rg.Value = "Zeile 4"
Set shp = .Shapes.AddShape(msoShapeOval, rg.Left + 1, rg.Top + 1, _
rg.Width - 2, rg.Height - 2)
shp.Fill.ForeColor.SchemeColor = 5
shp.Name = "Ellipse 1"
Set rg = ws.Cells(5, 2)
'usw.
End With
Set rg = Nothing
Set shp = Nothing
Set ws = Nothing
Diese Lösung hatt Beverly bereits hier vorgeschlagen:
https://www.herber.de/forum/messages/1227279.html
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Shape in Zellen positionieren
26.08.2011 13:58:15
Gregor
Hoi Luschi
Vielen Dank. Beim 1. Versuch wurde der Shape (wie bei meinem Code) im Bereich Zelle A3 statt 4 positioniert. Ich weiss nicht, wieso das passiert und vermute, es hat erwas mit der Zoom-Einstellung zu tun, auch wenn ich mir das aufgrund des Zellbezugs nicht erklären kann. Ich habe dann die Zoom-Einstellung von 130 auf 100 und dann wieder auf 130 gestellt, und dann war die Positionierung richtig. Nur kenne ich die Einstellungen der Anwender natürlich nicht und diese sind individuell.
Gruss Gregor
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Shapes in Excel-Zellen positionieren


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere das VBA-Fenster: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf den Projektbaum und wähle Einfügen > Modul.

  3. Füge den folgenden Code ein, um Shapes in den Zellen zu positionieren:

    Sub PositioniereShapes()
       Dim ws As Worksheet
       Dim rg As Range
       Dim shp As Shape
       Set ws = ThisWorkbook.Worksheets("Tabelle1")
    
       ' Beispiel für Zeile 4 bis 7
       For i = 4 To 7
           Set rg = ws.Cells(i, 2)
           rg.Value = "Zeile " & i
           Set shp = ws.Shapes.AddShape(msoShapeOval, rg.Left + 1, rg.Top + 1, rg.Width - 2, rg.Height - 2)
           shp.Fill.ForeColor.SchemeColor = i - 3 ' Unterschiedliche Farben
           shp.Name = "Ellipse " & (i - 3)
       Next i
    End Sub
  4. Führe das Makro aus: Klicke auf Run oder drücke F5, um die Shapes zu erstellen.


Häufige Fehler und Lösungen

  • Shapes positionieren sich nicht korrekt: Dies kann an der Zoom-Einstellung liegen. Stelle sicher, dass der Zoom-Faktor auf 100 % gesetzt ist, bevor du das Makro ausführst.
  • Shape wird in einer anderen Zelle angezeigt: Überprüfe die Zellreferenz und stelle sicher, dass die Positionierung auf die Zellkoordinaten basiert. Der Code zur Positionierung sollte rg.Left und rg.Top verwenden.

Alternative Methoden

Du kannst Shapes auch manuell über das Excel-Oberfläche hinzufügen:

  1. Gehe zu Einfügen > Formen.
  2. Wähle die gewünschte Form aus, z.B. Oval.
  3. Klicke und ziehe, um die Form in die gewünschte Zelle zu positionieren.
  4. Um die Position mit VBA zu steuern, kannst du denselben Code wie oben verwenden, jedoch in einer anderen Struktur.

Praktische Beispiele

Hier sind einige nützliche Beispiele zur Positionierung von Shapes in Excel:

  1. Oval an einer bestimmten Position:

    Set shp = ws.Shapes.AddShape(msoShapeOval, 50, 50, 100, 50)
  2. Shape in der Mitte einer Zelle:

    Set shp = ws.Shapes.AddShape(msoShapeOval, rg.Left + (rg.Width / 2) - 50, rg.Top + (rg.Height / 2) - 25, 100, 50)

Nutze diese Beispiele, um die excel shape position nach deinen Wünschen zu gestalten.


Tipps für Profis

  • Nutze Excel VBA für komplexere Aufgaben, um die vba shape position zu optimieren.
  • Experimentiere mit verschiedenen shapes.addshape-Parametern, um individuelle Designs zu erstellen.
  • Setze Zoom-Einstellungen in deinem Code, um konsistente Ergebnisse über verschiedene Benutzer hinweg zu gewährleisten.

FAQ: Häufige Fragen

1. Warum werden meine Shapes nicht an der gewünschten Position angezeigt?
Das kann an unterschiedlichen Zoom-Einstellungen oder der Art und Weise liegen, wie du die Position im VBA-Code festlegst. Überprüfe deine Zellreferenzen und Zoom-Einstellungen.

2. Wie kann ich die Farben der Shapes ändern?
Nutze die Eigenschaft shp.Fill.ForeColor.SchemeColor, um die Farben der Shapes nach deinen Wünschen anzupassen.

3. Gibt es eine Möglichkeit, Shapes automatisch zu löschen?
Ja, du kannst Shapes mit dem folgenden Code entfernen:

For Each shp In ws.Shapes
    shp.Delete
Next shp

Mit diesen Informationen bist du nun in der Lage, Shapes in Excel-Zellen präzise und effizient zu positionieren!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige