Kontrollstrukturen
Die Makrosyntax bietet keine direkte Unterstützung von Kontrollstrukturen wie If-Then-Else-Verzweigungen oder Schleifenkonstrukten, sondern nur einzeilige Makroausdrücke mit den Elementen, die unter Makroausdrücke beschrieben sind.
Mit einigen Makrofunktionen kann die Funktionalität von Kontrollstrukturen jedoch in Grundzügen nachgebildet werden. Das sind insbesondere die Funktionen If(), IfElse() und ForEachItem(). Detaillierte Informationen zur Bedeutung und Anwendung dieser Makrofunktionen finden Sie unter Kontrollstrukturen.
Diese Funktionen stellen in Hinblick auf die Syntax und die Arbeitsweise normale Funktionen dar. Bei den Funktionen If() und IfElse() ist jedoch der folgende Unterschied zu beachten:
Im Normalfall werden Funktionen rekursiv von innen nach außen ausgeführt. Zunächst werden alle vorhandenen Unterausdrücke vollständig ausgewertet, deren Ergebniswerte als Parameter der übergeordneten Funktionen dienen. Danach werden die übergeordnete Funktion ausgeführt. Bei Funktionen wie If() und IfElse() sollen aber nicht alle Unterfunktionen pauschal ausgeführt werden. Stattdessen soll die Ausführung nur abhängig von einer Bedingung stattfinden, weil in dieser Bedingung unter Umständen eine Voraussetzung für ihre Ausführung geprüft werden kann und ansonsten ein Ausführungsfehler auftritt. Daher wird bei solchen Funktionen zunächst nur der Unterausdruck ausgewertet, der die Bedingung repräsentiert. Erst danach wird ausschließlich der Unterausdruck ausgeführt, der mit dem Ergebnis dieser Auswertung korrespondiert. Bei If() kann abgängig von dem Ergebnis auch gar kein Unterausdruck ausgeführt werden.