Jörg: Excel: VBA IF-Abfrage

Beitrag lesen

Hi gary,

Der Code um alle Ampelsignale auf aus zu setzen:

' Alle Ampeln aus
    ActiveSheet.Shapes("Group 41").Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Shapes("Group 42").Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Shapes("Group 46").Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Shapes("Group 50").Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Shapes("Group 54").Select
    Selection.ShapeRange.ZOrder msoBringToFront
    ActiveSheet.Shapes("Group 58").Select
    Selection.ShapeRange.ZOrder msoBringToFront

eigentlich müsste das auch kürzer gehen:

for each x in activesheet.shapes
    x.shaperange.zorder msobringtofront
next

Ist aber nicht getestet, mit Grafiken arbeite ich nur selten.
Ansonsten solltest Du immer versuchen, Select und Activate zu vermeiden.

ActiveSheet.Shapes("Group 41").ShapeRange.ZOrder msoBringToFront

Und die Abfrage, die so schwer gar nicht ist, wenn man weisswies geht:

' D-Ampel-Setting

Auch hier taucht Select wieder auf …
In dem kleinen Beispiel mag das mit Select noch gehen, aber wenn Du mal etwas Komplexeres schreibst, wirst Du merken, wie lästig das ist.

Die Excel-Syntax ist halt schon stark gewöhnungsbedürftig. Nennt sich  wie gesagt wurde VBA (Visual Basic for Applications) und dann kommen noch spezifische Unterschiede je nach verwendeter Excel Version dazu,tztz

Naja, die Syntax ist halt Basic. Wenn man sich daran gewöhnt hat, geht es schon. Im Prinzip ist es immer:

Objekt.Methode bzw.
Objekt.Eigenschaft = xyz

Schlimmer sind wirklich die verschiedenen Versionen …

Viele Grüße

Jörg