Die folgenden Funktionen sind in der Praxis eher unnötig und kaum zu empfehlen.
Es werden nämlich stets alle Parameter ausgewertet, selbst wenn diese überhaupt
nicht benötigt werden (siehe hierzu das folgende Beispiel zu Choose
).
Anstelle dieser Funktionen sollten die
Befehle für Verzweigungen
If
oder
Select-Case
verwendet werden.
Choose(Index As Single, Choice() As Variant) As Variant
Wählt anhand Index
einen Wert aus Choice()
aus und
gibt ihn zurück. Ist Index
kleiner 1 oder größer als die Anzahl der
Werte in Choice()
, wird Null
zurückgegeben.
Debug.Print Choose(1, "A", "B", "C") A Debug.Print Choose(2, "A", "B", "C", MsgBox("Das ist D"), "E") B
Im zweiten obigen Beispiel ist auch noch ein
MsgBox-Befehl enthalten. Obwohl dieser Parameter
gemäß Index
nicht ausgewählt wird, wird der Befehl dennoch ausgeführt.
Iif(Expression As Variant, TruePart As Variant, FalsePart As Variant) As Variant
Expression
wird als Ausdruck ausgewertet. Ist er True
,
wird TruePart
zurückgegeben, sonst FalsePart
.
Debug.Print Iif(15 = 15 , "Richtig", "Unrichtig") Richtig
Partition(Number As Variant, Start As Variant, Stop As Variant, Interval As Variant) As String
Teilt den „Zahlenstrahl“ von Start
bis Stop
in
Abschnitte gemäß Interval
. Es wird dasjenige Intervall zurückgegeben,
in dem Number
liegt. Dabei wird der Rückgabewert so formatiert, dass,
bei gleichem Wert von Stop
, stets gleich viele Leerzeichen vorhanden
sind.
Debug.Print Partition(99, 1, 100, 5) 96:100
Switch(VarExpr() As Variant) As Variant
VarExpr
muss zwingend eine gerade Anzahl von Parametern enthalten,
von denen jeweils zwei zusammengehören. Der jeweils erste davon ist ein Ausdruck,
der ausgewertet wird, und wenn er True
ist, wird der zugehörige
nächste Parameter zurückgegeben.
Function Sprache(Stadt As String) Sprache = Switch(Stadt = "Zürich", "Deutsch", _ Stadt = "Lausanne", "Französisch", _ Stadt = "Locarno", "Italienisch", _ Stadt = "Chur", "Rätoromanisch") End Function