I come from the beautiful world of Obj C, which is based on the C programming language, and I've fallen in love with finding quirky ways to save space. However, I've looked through as much documentation as I can and I can't find anything juicy on VBA that will shorten this syntax:
If boolVar = True Then
'Do something
Else
'Do nothing
End If
In Obj C, and naturally C, I'm extremely familiar with doing this:
boolVar ? "Nope, tis false" : "Yup, tis true"
This is very similar to what most other languages use, some may use extra logical operators like !=
or ==
but that leaves me optimistic. I may not have looked in the right places, if that's the case PLEASE let me know where you get your documentation.
TLDR, can we shorten If/Then/Else to one line of code in VBA? This is extremely handy when the 'Do Somethings' are nothing more then setting another variable's single parameter, or enabling/disabling a button.
the closest function is
IIf()
but:
you can't have its branches simply running code, while you have to assign its return value to some variable,
it doesn't short-circuit,
it always evaluates both branches so that should one of them fail, even if not the "real" one, the statement would throw an error anyway.
So the most resembling statement is:
where:
boolVar
is a boolean type variable,sub1
andsub2
are two different subs/functions to be called.As an alternative you can create the following public function in a module:
So far works for me.