## Formula Arguments and Intellisense

Even though you’ve seen Excel’s Formula Intellisense a million times, I bet there’s a few things that you don’t know about it that can make your life even easier.

Let’s first look at an example for one of Excel’s in-built functions. Say we want to use an IFERROR function. As soon as we type the = sign in the toolbar and the opening ‘I’ from IFERROR, Excel provides a helpful list of functions that start with the letter ‘I’, as well as a pop-up tool tip telling us what the currently highlighted function from that list does. That popup tool tip is often in the way, but you can move it somewhere else simply by clicking on it and dragging it to the naughty corner.

To select the IFERROR function from that list, we can either use the arrow keys to navigate down that intellisense list, or we can left-click on the particular function we want:

…or we can continue typing, which allows Excel to gradually narrow down the number of functions until there is only one possible choice…the IFERROR function we’re after:

At this stage, I *almost always* push **Enter** in order to get Excel to populate this one remaining function in the intellisense list into the formula bar. And then I *almost always* swear out loud, because **Enter** is the incorrect key, and because Excel has never heard of an *ife* function, it asks me for my name, so that it can pass it on to the ‘re-education’ team at Microsoft:

The correct key we need to push is the **TAB** key, which tells Excel to fill out the rest of the IFERROR name for us. After it’s done this, Excel then helpfully prompts us for the two arguments of the IFERROR function with another handy pop-up tool-tip:

Now let’s compare that to the options Excel gives us for a UDF. I’ll use my JoinText UDF. Typing =j pops up a very short list indeed: there are no other functions starting with J. But the UDF’s name is *all* we get. There’s no tooltip remindingus what the JoinText function actually does…

…and after we select it by hitting that TAB key, there’s no tooltip prompting us for the function arguments:

So why don’t UDFs have intellisense? That’s a *damn* good question, and one that programmers have been asking Microsoft about for years. If you can’t remember the arguments for your UDF, you won’t be getting very far. **Unless you happen to know this handy little trick**: If you push CTRL + SHIFT + A at this stage, Excel helpfully inserts placeholders for all the argument names for that function into the formula bar:

…which you can then overtype with the actual arguments, now that you’ve been reminded what they are. How cool is that!

This trick also works with Excel’s native functions, too:

But the problem we still have with that UDF is this: Which arguments are optional? In the case of the VLOOKUP above, we can see this by the square brackets around the optional [range_lookup] argument in the tool-tip. (As if *that* argument is optional in the real world…)

But with our UDF, we don’t get that tool-tip pop-up.

Sure, we *could* just put the prefix *opt* in front of the optional arguments in the VBE:

…which would give us this:

…but where’s the fun in that?

It would be cool if we could simply add square brackets to our variable names back in the VBE, so that when we do our Ctrl + Shift + A trick, those arguments look like this:

So what other interesting characters *can* we use in VBA variable names? According to this thread, these ones:

Any character in the range 128-255 is allowable. That’s right, you can copy-write and trademark your variable names if you want!

And a couple of them look quite bracketish. Let’s try them:

Yup, that compiles. And how does it look when we Ctrl + Shift + A that sucker?

Hmmm. Works a treat.

Down side? Don’t know. You tell me…