How to implement Properties, Methods and Events on a Class
Creating a Property
You guys might feel a little tired with all this theory. So this time, let's actually make a simple example class called PHONE
Open the VBE (Visual Basic Editor), then insert a Class Module from Insert > Class Module menu. Next, on the Properties Window, change the name of the inserted class
. Now, you have a Class Module named PHONE.
Now, you have a Class Module named PHONE
As the next step, let's assign a property named Number. In order to set a value to the property, use the Property Let
The content of the of property is indeed a Variable so to keep the value of a property, we must use a variable.
Normally, a Private type variable is used in the Class Module. It is concerned with scope level,
but so far, to avoid getting you confused, just remember it as it is.
For your information the prefix m stands for a variable declared as a module level variable.
Declare a variable named m_strNumber as a Private type. Since the Phone Number is string, declare it as a string type. This variable will be used for keeping the value in this Class Module.
'A Class Module named PHONE
Private m_strNumber As String
Next, using the Property Let
statement, make a procedure for setting a value to this property.
Property Let Number(ByVal newvalue As String)
m_strNumber = newvalue
The above procedure will pass a value in the argument “newvalue” to a private variable
, and the value will be kept in the m_strNumber
To get a value from the property, use Property Get
Property Get Number() As String
Number = m_strNumber
The above code would pull the value from a private variable m_strNumber
It looks like a Function procedure.
From above example, you can see a Property is handled as a variable inside of the class.
Finally, you can use the Number property on the PHONE
class. So let’s use this property from a standard module.
Insert a standard module then enter the following code.
Click here to DOWNLOAD a sample workbook.
'As I wrote, to use a Class from a standard module,
'we need an object variable as a relay object,
'so declare an object variable named MyPhone in the top of module.
Dim MyPhone As PHONE
'When set a property, at first we need to create
'an instance of Phone class.
Set MyPhone = New PHONE
If MyPhone Is Nothing Then
'You can omit Let Statment
Let MyPhone.Number = "1234"
Please have a look at the code shown in the standard module part. Sub Test_Set_Property
set a Number property to the PHONE Class.
To handle a class from a standard module, need to create an instance of the Class.
So if the Object MyPhone is not created as yet, you need to tell VBA what the MyPhone is.
After that, you can use a created property like built-in properties.
To be continued to the next chapter.