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

Aufruf Reihenfolge von Shapes

Forumthread: Aufruf Reihenfolge von Shapes

Aufruf Reihenfolge von Shapes
18.01.2026 16:25:51
Dieter(Drummer)
Guten Tag an alle.

Frage: Wieso werden die Shapes im Code nicht so hintereinander aktiviert, wie sie im Code angegeben sind, sondern wie sie hintereinander im Tabellenblatt angelegt wurden?

Im Tabellenblatt hintereinander angelegt: Ellipse1, Dreieck1 und Rechteck1, in dieser Reihenfolge.

Der Code:
Sub Shapes_AnAus() ' Kombiniert das Ein- und Ausblenden

' Schaltet den Sichtbarkeitsstatus der Shapes um
On Error Resume Next
Dim sh As Shape

' Mx: Aufruf Reihenfolge der Shapes erfolgt nach erstellen der Shapes
' und geht nicht über Code
For Each sh In ThisWorkbook.Sheets("Tabelle1").Shapes
If sh.Name = "Rechteck1" Or sh.Name = "Ellipse1" Or sh.Name = "Dreieck1" Then
sh.Visible = Not sh.Visible ' Invertiert den aktuellen Zustand

Application.Wait Now + TimeSerial(0, 0, 0.6) 'wartet 0.6 Sekunden

End If
Next sh
On Error GoTo 0
End Sub


Evt. kann man den Code auch noch vereinfachen?

Mit der Bitte um Info und Hilfe, grüßt
Dieter(Drummer)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Aufruf Reihenfolge von Shapes
18.01.2026 16:44:00
snb
Ich möchte bevorzügen:

Sub M_snb()

Shapes.Range(Array("rectangle", "oval")).Visible = Not Shapes.Range(Array("rectangle", "oval")).Visible
End Sub

AW: Aufruf Reihenfolge von Shapes
18.01.2026 17:57:01
xlKing
Hallo Dieter,

Shapes werden, beim Anlegen in der 3. Dimension immer übereinandergestapelt. Sie können sich u.U. auch gegenseitig überdecken. Daher werden sie in Schleifen immer mit dem untersten (also dem Shape ganz hinten) zuerst aufgerufen. Dann das darüberliegende usw. Wenn die Shapes nebeneinander vollständig zu sehen sind hat das keinen Einfluss auf die Reihenfolge in der 3. Dimension. Diese kannst du aber ändern, indem du z.B. mit der rechten Maustaste auf ein Shape klickst und es in den Hintergrund (oder 1. Ebene nach hinten) schiebst.

Das geht auch über VBA. Dafür gibts die ZOrder Eigenschaft. zum auslesen oder die ZOrder-Methode zum ändern der Position in der 3. Dimension.

z.B.

Dim shp As Shape


Set shp = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
shp.ZOrder msoSendToBack
MsgBox shp.ZOrderPosition & " " & shp.Name

Die Messagebox sollte 1 ergeben.

Gruß Mr. K.
Anzeige
AW: Aufruf Reihenfolge von Shapes
19.01.2026 11:02:45
Dieter(Drummer)
Danke Mr. K. und sorry für späte Rückmeldung.

Damit kann ich etwas anfangen. Danke.

Gruß,
Dieter(Drummer)
AW: Aufruf Reihenfolge von Shapes
18.01.2026 19:00:18
Daniel
H Dieter

Du hast hier keine Reihenfolge angegeben.
Die For Each In Schleife arbeitet die Objekte in der internen Reihenfolge ab und die richtet sich in der Regel nach der Reihenfolge, in der diese Objekte angelegt wurden,
In deinem IF-Then fragst du ja nur, ab das Objekt einen diese drei Namen hat, in welcher Reihenfolge du hier die einzelnen Bedingungen angibst, hat ja nichts mit der Reihenfolge der Schleife zu tun.

Wenn dann so, die drei Shapes mit diesen Namen müssen vorhanden sein.

Dim s

For each s in Array("Rechteck1", "Ellipse1", "Dreieck1")
With ThisWorkbook.Sheets("Tabelle1").Shapes(s)
.visible = not .visible
Application.Wait Now + TimeSerial(0, 0, 0.6)
End with
Next
Anzeige
AW: Aufruf Reihenfolge von Shapes
19.01.2026 11:05:13
Dieter(Drummer)
Danke Daniel für Info und Sorry für späte Rückmeldung.

Damit komme ich gut weiter.

Gruß,
Dieter(Drummer)
AW: Aufruf Reihenfolge von Shapes
18.01.2026 17:01:50
Dieter(Drummer)
Danke snb,

dein Code hilft mir nicht. Ich weiss nicht wie ich den umsetzen kann.

Gruß,
Dieter(Drummer)
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18