1. User Defined Types Review (12:47)
Create and use a User-Defined Type (UDT)
Store related data in one variable
Build a function that returns a UDT
See why UDTs are limited vs. class modules
Defining a public user-defined type in a regular module
Initializing and setting properties of a user-defined type
Using user-defined types as local variables in procedures
Creating multiple instances of a user-defined type
Writing a function to generate and return a user-defined type
Passing parameters to a function to create a user-defined type
Assigning user-defined type return values from a function
Working with the scope of user-defined type variables
Creating functions to modify user-defined type data
Returning updated user-defined types from a function
Tracking scope and persistence of variables at form level
Understanding the limitations of user-defined types
Discussing the lack of data protection in user-defined types
Understanding the need for class modules for data protection
2. First Class Module (9:17)
Create a new class module and name it
Add public variables to the class
Instantiate the class and assign values
Compare usage to UDTs for familiarity
Reviewing user-defined types in VBA
Creating a new class module in Access VBA
Naming the class module and naming conventions
Adding public variables to a class module
Instantiating a class and assigning values
Using Set and New keywords with class objects
Assigning values to class object properties
Comparing class modules to user-defined types
Creating multiple instances of a class
Defining methods inside a class module
Building a CreateCustomer method inside the class
Using the Me keyword in class modules
Initializing class objects using class methods
Centralizing object logic in a class method
Explaining benefits of storing logic in the class
Introduction to encapsulation in class modules
Comparing encapsulation in classes vs user-defined types
3. Encapsulation (13:25)
Convert public into private class-level variables
Use Property Get and Let procedures
Add input validation inside the class
Prevent accidental or invalid data changes
Improve data protection and modular code structure
Encapsulation in class modules
Converting public variables to private
Using properties to access private data
RIC class variable naming convention
Writing Property Get procedures
Using IntelliSense with properties
Writing Property Let procedures
Implementing data validation in Property Let
Handling errors in property setters
Restricting access to class internal variables
Setting values in CreateCustomer using Property Let
Ensuring validation on object initialization
Allowing selective access to class properties
Practical example of rejecting invalid property values
Differentiating between property names and variable names
4. Calculated Properties (12:06)
Create calculated properties like YearsActive
Use Property Get to return derived values
Format names with FullName and Summary
Build smart labels with StatusLabel
Make properties read-only with no Let
Centralize logic inside the class
Creating calculated properties in class modules
Implementing a read-only years active property
Using DateDiff to calculate years active
Concatenating first and last name as full name property
Making a read-only full name property
Referencing calculated properties within the class
Handling null or missing values in property calculations
Building a customer status property based on active status and years active
Returning custom status strings from a property
Displaying class property values in your main code
Assigning and updating class property values
Adding multiple calculated properties to a class
Using read-only properties for dynamic information
5. Methods & Behavior (9:51)
Add methods like Deactivate to change object state
Apply business rules inside the class
Log deactivation dates and prevent duplicate actions
Use private helper functions for clean internal logic
Keep business logic out of forms and centralized in the class
Adding methods to a class module
Creating a deactivate method for a customer
Handling state changes within the class
Implementing business rules in class methods
Restricting deactivation based on years active
Tracking deactivated date for a customer
Exposing deactivated date as a formatted property
Using private helper functions inside a class
Formatting dates using a private function
Encapsulating business logic within a class
6. Real World Example (10:37)
Load real data from CustomerT into a class object
Assign field values using Property Let procedures
Display calculated and formatted output from the class
Enforce business rules like minimum active time
Keep form logic clean and move behavior into the class
Using a recordset to loop through customer records
Populating a class instance with recordset data
Handling null values when setting class properties
Displaying customer data via class functions
Creating a new class instance for each record in a loop
Destroying class instances after use
Setting up property let and property get in a class
Exposing class fields for external assignment
Debugging read-only property errors in VBA classes
Displaying customer full name and status using class methods