Many VB developers don’t realize that the Switch built-in function can often save a lot of code. This function takes any number of (expr, value) pairs, it evaluates all expressions and return the value related to the first expression that is found to be True. Typically you can use a Switch function to replace a If…ElseIf block, as in:
' the standard wayIf x = 0 Then result = 100ElseIf x < y Then result = xElseIf x > y Then result = yElse ' X = Y and X <> 0 result = 200End If' the more concise code' Note that the Else clause is rendered with a True constantresult = Switch(x = 0, 100, x < y, x, x > y, y, True, 200)
If no expressions in the list returns a non-zero value, the Switch function returns Null. If you want to avoid this, just use True for the last expression in the list, as in the above example.
It is important to note that the Switch function always evaluate all the arguments passed to it, so you get an error whenever any argument is invalid, for example:
' the following statement raises a "Division by Zero" error if Y=0MsgBox Switch(x = 0, "X is zero", y = 0, "Y is zero", True, "X/Y = " & x / y)
You can use the Switch function to quickly evaluate the minimum and the maximum of three values:
' the minimum of n1, n2, n3min = Switch(n1 <= n2 And n1 <= n3, n1, n2 <= n1 And n2 <= n3, n2, True, n3)' the maximum of n1, n2, n3max = Switch(n1 >= n2 And n1 >= n3, n1, n2 >= n1 And n2 >= n3, n2, True, n3)