BY CATEGORY▼
- VIDEOS HOME PAGE
- .NET (14)
- Business Intelligence (40)
- Integration Services (19)
- Macros and Programming (82)
- Microsoft Excel (70)
- Microsoft Office (92)
- Miscellaneous (1)
- Power BI (35)
- Power Platform (35)
- Python (31)
- Report Builder (107)
- Reporting Services (113)
- SQL (42)
- Visual Basic for Applications (215)
- Visual C# (14)
VBA CATEGORIES▼
- Excel VBA - Basics (24)
- VBA User Forms (22)
- Excel VBA - pivot tables (9)
- Excel VBA - charts (6)
- VBA - advanced (14)
- VBA - working with files (12)
- VBA - linking applications (12)
- VBA - working with Outlook (14)
- Built-in VBA functions (9)
- VBA - working with data (57)
- VBA - scraping websites (25)
- VBA - working with shapes (5)
- VBA - classes and structures (6)
VBA - CLASSES AND STRUCTURES VIDEOS▼
VBA - classes and structures videos | Excel VBA Part 35 - Class Modules
Posted by Andrew Gould on 13 October 2014
Class Modules in VBA allow you to define your own classes of objects. This video explains why that's a useful and shows you how to go about creating a class. You'll learn about the two class events: initialise and terminate, you'll see how to define properties, including how to create read-only properties and set default values. You'll also find out how easy it is to create methods for your class and how to use your class in your regular code.
See our full range of VBA training resources, or test your knowledge of VBA with one of our VBA skills assessment tests.
There are no files which go with this video.
There are no exercises for this video.
Making a video bigger
You can increase the size of your video to make it fill the screen like this:

Play your video (the icons shown won't appear until you do), then click on the full screen icon which appears as shown at its bottom right-hand corner.
When you've finished viewing a video in full screen mode, just press the Esc key to return to normal view.
Improving the quality of a video
To improve the quality of a video, first click on the Settings icon:

Make sure you're playing your video so that the icons shown appear, then click on this gear icon at the bottom right-hand corner.
Choose to change the video quality:

Click on Quality as shown to bring up the submenu.
The higher the number you choose, the better will be your video quality (but the slower the connection speed):

Don't choose the HD option unless you have a fast enough connection speed to support it!
Is your Wise Owl speaking too slowly (or too quickly)? You can also use the Settings menu above to change your playback speed.
Hi,
Can you please explain why Method 1 fails but Method 2 works?
Method 1:
'This is Class1
Option Explicit
Public MyArr As Variant
Private Sub Class_Initialize()
ReDim MyArr(1 To 5) As Variant
Dim i As Integer
For i = 1 To 5
MyArr(i) = 0
Next i
End Sub
'This is in a standard module
Option Explicit
Sub Start()
Dim abc As Class1
Set abc = New Class1
abc.MyArr(1) = 10
Debug.Print abc.MyArr(1)
End Sub
After this line has been run:
abc.MyArr(1) = 10
in the Immediate Window, I see:
abc.MyArr(1) = 0
I expect it to be 10.
However using tmp variable seems to do the trick.
Method 2:
Sub Start()
Dim tmp As Variant
Dim abc As Class1
Set abc = New Class1
tmp = abc.MyArr
tmp(1) = 10
abc.MyArr = tmp
Debug.Print abc.MyArr(1)
End Sub
Thanks
Hi duggie, I hope it's OK to answer this question with a link but there's a good explanation of what's going on here https://stackoverflow.com/questions/25328975/array-as-a-class-member
I hope that helps!