Not graded. So why do it?
Not graded. So why do it?
Operators
+, -, and * are numeric operators. Here are the numeric operators you'll use in this course:
| + | Add, like 2 + 9 is 11 |
| - | Subtract, like 2 - 9 is -7 |
* |
Multiply, like 2 * 9 is 18 |
| / | Divide, like 3 / 3 is 1 |
| ^ | Raise to a power, like 3 ^ 3 is 27) |
| - | Unary minus, like -3 |
- 34 - 3
... is a numeric expression. That is, a calculation that works out a number.

Bee tee dubs, goats often call * a "splat." More fun to say than asterisk.
Geeks do the same thing.
Order
Check this out:
- dog = 2 + 3 * 4
- MsgBox dog
You might think that that would show 20 in the dialog. 2 + 3 is 5, and 5 * 4 is 20.
But actually, it would show 14.
That's because VBA doesn't use the operators from left to right. Instead, some operators have a higher precedence than others. VBA does * before it does +. So it's 3 * 4 is 12, and then 2 + 12 is 14.
If you wanted VBA to do the + first, add parentheses:
- dog = (2 + 3) * 4 is 20
Here are the numeric operators again, in precedence order:
| () | VBA does anything in parens first. |
| - | Unary minus, like -3 (that's negative 3) |
| ^ | Raise to a power, like 3 ^ 3 |
* and / |
Multiply and divide have equal priority, done left to right. |
| + and - | Add and subtract have equal priority, done left to right. |
The operators in...
- cat = 3 - 5 + 2 * 2 ^ 2 + 3
... would be done in this order...
- 3 - 5 + 2 * 2 ^ 2 + 3 becomes 3 - 5 + 2 * 4 + 3
- 3 - 5 + 2 * 4 + 3 becomes 3 - 5 + 8 + 3
- 3 - 5 + 8 + 3 becomes -2 + 8 + 3
- -2 + 8 + 3 becomes 6 + 3
- 6 + 3 becomes 9
Variables
Check this again:
- cat = 3 - 5 + 2 * 2 ^ 2 + 3
All of the values in the numeric expression are constants. 3 is always 3, 5 is always 5.
However, they could also be variables.
- sMouse = InputBox("Mice?")
- sLlama = InputBox("Llamas?")
- sCat = sMouse - 5 + sLlama * sLlama ^ 2 + sMouse
OK, silly variable names, but it would run.
What do they do?
Here are some programs. What would they output?
You can download a workbook with all of the code.

Ray
None.

Ray
Well, I didn't make you do it. You could have just skipped the task. The reason I put the task there, is to help you learn something that might be worth knowing.

Ethan
I hear you. And you're right to question it. Is all coursework worth your time? Maybe not.

Ethan
Thanks. I think.
All I'll claim is that there's no busy work in this course. Everything's focused on the learn-so-you-can-earn-benjamins goal.

A suggestion. Give it a couple of weeks. See if you think this course is worth your time. If you think it is, don't skip the readings, or the tasks.
This isn't math
A common thing in programming:
- sAmount = InputBox("Amount?")
- aTotal = sTotal + sAmount

Ray
Wait, no. sTotal = sTotal + sAmount makes no sense. A variable can't be equal to itself, plus something else. Unless sAmount is zero.
That would be true, if this was math. But it isn't. In programming, = means take the thing on the right, and put it in the thing on the left. Like this:
sTotal <- sTotal + sAmount
This says,
"Hey, VBA! Take sTotal and sAmount, and add them together. Then put the result back in sTotal.

Ray
Oh, dude! I get it. It's increasing sTotal by whatever is in sAmount. So if sTotal is 10, and sAmount is 3, then sTotal is increased by 3, to 13.
Exactly! Programs do this all the time.
An assignment statement, like sTotal = sTotal + sSales. Adds to a variable, then puts the result back in the variable.
Numeric functions
So we have variables, like sTotal, constants, like 72, and operators, like *. There's one other type of thing: functions. There are a bunch, but we'll only use a few:
| Sqr() | Square root, like sqr(36) is 6 |
| Abs() | Absolute value, like abs(-3.2) is 3.2 |
| Rnd() | Return a random number between 0 and 1 |
For example:
- sGoat = 2
- sFish = 18
- MsgBox Sqr(sGoat * sFish)
That would show 6.
Try these
Some more tasks. They don't count towards your grade, but will help you learn.