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? ChangeView 3 'Constants are better ChangeView VIEW_BY_LOCATION
An even better way is to define an enumeration:
Private Enum eViews vByName = 1 vByPhone = 2 vByLocation = 3 End Enum '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 End Enum
This lets you distinguish between (for instance) a True/False questionthat has or has not been answered.