Declare public constants in a class module

As you may know, Visual Basic doesn't allow public constants in a class
module. This is really too bad, because often you'll find it necessary
to declare constants that you can maintain and transfer along with the
class, but that are also available to the projects that use the class.
Well, the good news is that Visual Basic does provide a way to declare
public constants in a class module. The bad news is that you can only
do so with numeric constants.

However, if that works for you, then consider including a Public Enum
statement in your class. The Enum statement provides for enumeration
of variables. Both variables and parameters can be declared with an
Enum type. To use an Enum, you declare a type and fill it with elements.
If you provide constant values for the elements, then Visual Basic uses
those values. If you don't provide values, then Visual Basic starts
the list at 0 and increments each element's value by one. For instance,
with the following declaration:

Public Enum POPConstants
POP_CONNECT
POP_USER
POP_PASS
POP_STAT
POP_LIST
POP_RETRIEVE
POP_DELETE
POP_QUIT
End Enum

POP_CONNECT would be equal to 0, POP_USER 1, POP_PASS 2, and so on.
However, using the following declaration:

Public Enum POPConstants
POP_CONNECT = 2000
POP_USER = 3
POP_PASS = 10
POP_STAT = 4.5
POP_LIST = 7
POP_RETRIEVE
POP_DELETE
POP_QUIT
End Enum

the constants would equal the indicated values. Those constants without
a value would be one more than the previous variable. So, since POP_LIST
equals 7, POP_RETRIEVE woule be 8.

You can use public Enum constants just as you would any other constants,
like so:

Private Sub Command1_Click()
MsgBox POP_CONNECT & " " & POP_USER
End Sub

There's no need even to instantiate the class, since technically Visual
Basic doesn't consider Public Enum as members of a class, even though
they're written to the type library.

You might also like...

Comments

James Crowley James first started this website when learning Visual Basic back in 1999 whilst studying his GCSEs. The site grew steadily over the years while being run as a hobby - to a regular monthly audience ...

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.” - Alan Kay