Quite often, we find ourselves using variables to hold one of a set of possible values. For instance, let's say you have a number of views on a grid. You'll probably use an Integer to keep track of what view you're in and as an argument to change views.
'Here is how the sub is defined
Private Sub ChangeView(NewView as Integer)
'This is a pain to maintain - what's 3 mean?
'Constants are better
An even better way is to define an enumeration:
Private Enum eViews
vByName = 1
vByPhone = 2
vByLocation = 3
'use the enum like a type
Private Sub ChangeView(NewView as eViews)
Now, you can call ChangeView like this:
This will give you an Intellisense box showing vByName, vByPhone, and vByLocation. Now, you don't have to find your list of constants to remember what views you have.
Another handy enumeration is a tri-state:
Private Enum eSuperBoolean
sbTrue = -1
sbFalse = 0
sbDefault = 99
This lets you distinguish between (for instance) a True/False question
that has or has not been answered.