Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does VBA Have a Ternary Operator?

Tags:

excel

vba

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.

like image 899
soulshined Avatar asked Jan 11 '17 16:01

soulshined


People also ask

Is VBA phased out?

However, after VBA 6.5/Office 2007, Microsoft stopped licensing VBA for other applications. Office 2013, Office 2016, Office 2019 and Office 2021 include VBA 7.1.

Does != Work in VBA?

Bookmark this question. Show activity on this post. The problem is that != does not work as a function in excel vba.

What can I use instead of a ternary operator?

The alternative to the ternary operation is to use the && (AND) operation. Because the AND operator will short-circuit if the left-operand is falsey, it acts identically to the first part of the ternary operator.


1 Answers

Sub test()      Dim x As Long     Dim y As Long     y = 1     x = IIf(y = 1, 1, 2)  End Sub 
like image 121
cyboashu Avatar answered Nov 05 '22 04:11

cyboashu