ผมเขียนตัวอย่างสมมุติของ Class Recordset เพื่อให้เห็นภาพว่าเมื่อเราอ่านหรือกำหนดค่าให้ Property ของ Object ทำงาน มันจะไปสัมพันธ์กับโค้ดส่วนไหนใน Class นั้นๆ หวังว่าพอจะมีประโยชน์บ้างครับ แต่เอาไปรันจริงไม่ได้นะครับ แค่ตัวอย่างเท่านั้น
โค้ดข้างล่างนี้จะเขียนอยู่ใน Class Module และบันทึกในชื่อ Recordset
Option Compare Database
Option Explicit
Type RecordStructure                ' โครงสร้างของ Recordset Object
    RSField1    As Variant
    RSField2    As Variant
End Type
Dim Ptr         As Integer          ' เก็บตำแหน่งเรคอร์ดปัจจุบันของ Recordset นี้
Dim RC()        As RecordStructure  ' ตัวแปร Recordset Object
Private Sub Class_Initialize()
    ' Procedure จะทำงานโดยอัตโนมัติเมื่อ object ถูกสร้าง
    ' ตย.โค้ดเช่น เพิ่ม object นี้ลงใน Recordsets Collection (Collection คือ อ็อปเจ็คของกลุ่ม Object อีกที)
End Sub
Private Sub Class_Terminate()
    ' Procedure จะทำงานโดยอัตโนมัติเมื่อ object ถูกเคลียร์ให้เป็น Nothing
    ' ตย.โค้ดเช่น นำ object นี้ ออกจาก Recordsets Collection
End Sub
Public Property Let Bookmark(NewPosition As Integer)
    ' กำหนดตำแหน่งเรคอร์ดปัจจุบันของ Recordset
    If NewPosition <= UBound(RC) Then
        Ptr = NewPosition
    Else
        Err.Raise 1234, "Invalid Bookmark"
    End If
End Property
Public Property Get RecordCount() As Long
    ' คืนค่าจำนวนเรคอร์ดทั้งหมดใน Recordset
    RecordCount = UBound(RC)
End Property
Public Property Get Fields(Name As String) As Variant
    ' คืนค่าฟิลด์ตามชื่อฟิลด์ที่ส่งมาในตัวแปร Name
    Select Case Name
        Case "CustomerID"
            Fields = RC(Ptr).RSField1
        Case "CustomerName"
            Fields = RC(Ptr).RSField2
        Case Else
            Err.Raise 2589, "Invalid Field Name"
    End Select
End Property
Public Property Get EOF() As Boolean
    ' คืนค่า True เมื่อตำแหน่งเรคอร์ดปัจจุบันเลยเรคอร์ดสุดท้ายไปแล้ว
    If Ptr > UBound(RC) Then
        EOF = True
    Else
        EOF = False
    End If
End Property
Public Sub MoveNext()
    ' เลื่อนไปยังเรคอร์ดถัดไปใน Recordset
    If Ptr <= UBound(RC) Then
        Ptr = Ptr + 1
    Else
        Err.Raise 7654, "End of file"
    End If
End Sub
ส่วนข้างล่างนี้เป็นโค้ดที่อยู่ใน Module ธรรมดาๆ ที่เรียกใช้ Object, Method และ Property ต่างๆใน Class Module Recordset ครับ
Private Sub Example()
    ' โค้ดพิมพ์ CustomerID และ CustomerName จากเทเบิล Customer ตั้งแต่เรคอร์ดที่ 10 เป็นต้นไป
    
    Dim RS  As DAO.Recordset
        
    Set RS = CurrentDb.OpenRecordset("Customer")
    ' เมื่อ Object ถูกสร้าง จะไปเรียก Class_Initialize procedure มาทำงาน
    
    If RS.RecordCount > 10 Then     ' โค้ดใน Property Get RecordCount จะถูกทำงาน
        RS.Bookmark = 10            ' โค้ดใน Property Let Bookmark จะถูกทำงาน เป็นการนำค่าเข้าไปใน Property Bookmark
    End If
    Do Until RS.EOF                 ' โค้ดใน Property Get EOF จะถูกทำงาน
        Debug.Print RS.Fields("CustomerID") & ";" _
                  & RS.Fields("CustomerName") ' โค้ดใน Property Get Fields จะถูกทำงาน
        RS.MoveNext                 ' โค้ดใน Sub MoveNext จะถูกทำงาน
    Loop
    
    Set RS = Nothing
    ' เมื่อ Object ถูกเคลียร์ จะไปเรียกโค้ดใน Class_Initialize procedure มาทำงาน
End Sub