Phân biệt Module và Class trong VBA

Lập trình viên phải phân biệt được Module và Class trong VBA khác nhau như thế nào

Trong VBA có 2 định nghĩa đó là Module Class, 2 định nghĩa này khác nhau như thế nào các bạn cùng mình phân tích nhé

  1. Tạo 1 module md_HocSinh
  2. Tạo 1 class obj_HocSinh
  3. Tạo 1 Form và thêm sự kiện click cho command và khởi tạo class và module
  4. Ví dụ viết 1 đối tượng giải phương trình bậc 1 theo lập trình hướng đối tượng


 

1. Tạo 1 module md_HocSinh

Option Compare Database

Public HoTen As String
Public Lop As String
Public Diem As Double
  

2. Tạo 1 class obj_HocSinh

Option Compare Database

Dim vHoTen As String
Dim vLop As String
Dim vDiem As Double

Public Property Get HoTen() As String
    HoTen = vHoTen
End Property

Public Property Let HoTen(ByVal vNewValue As String)
    vHoTen = vNewValue
End Property

Public Property Get Lop() As String
    Lop = vLop
End Property

Public Property Let Lop(ByVal vNewValue As String)
    vLop = vNewValue
End Property

Public Property Get Diem() As Double
    Diem = vDiem
End Property

Public Property Let Diem(ByVal vNewValue As Double)
    vDiem = vNewValue
End Property
 

3. Tạo 1 Form và thêm sự kiện click cho command và khởi tạo class và module

Option Compare Database
Private Sub Command0_Click()

' SU DUNG MODULE VBA
' Gan hoc sinh 1
mdHocSinh.HoTen = "A"
mdHocSinh.Lop = "10"
mdHocSinh.Diem = 5
' Giá trị mdHocSinh.HoTen là A
' Gan hoc sinh 2
mdHocSinh.HoTen = "B"
mdHocSinh.Lop = "11"
mdHocSinh.Diem = 6
' Sau khi qua dòng này thì Giá trị mdHocSinh.HoTen là B
' Giá trị đã bị ghi đè (thay đổi)

'Su dung Class VBA
Dim hs1 As New objHocSinh
hs1.HoTen = "A"
hs1.Lop = "10"
hs1.Diem = 5
' Giá trị học sinh 1 là A
Dim hs2 As New objHocSinh
hs2.HoTen = "B"
hs2.Lop = "11"
hs2.Diem = 6
' Giá trị học sinh 2 là B
' Xử lý được nhược điểm của module VBA
' Giá trị lưu riêng biệt cho từng đối tượng
' Còn gọi là lập trình hướng đối tượng trong VBA


End Sub
 

4. Ví dụ viết 1 đối tượng giải phương trình bậc 1 theo lập trình hướng đối tượng

Tạo ra 1 class có tên gptb1

Dim thoadieukien As String
Dim a_ As Double
Dim b_ As Double
Public Property Get a() As Double
    a = a_
End Property

Public Property Let a(ByVal vNewValue As Double)
    a_ = vNewValue
End Property

Public Property Get b() As Double
    b = b_
End Property

Public Property Let b(ByVal vNewValue As Double)
    b_ = vNewValue
End Property


Public Function nghiem_x()
    nghiem_x = -b / a
End Function


Public Function NapThamSo(ts_a, ts_b) As Boolean
    NapThamSo = True
    If ts_a = 0 Then
        MsgBox "tham so a khac 0"
        NapThamSo = False
    ElseIf IsNumeric(ts_a) = False Then
        MsgBox "tham so a PHAI NHAP LA SO"
         NapThamSo = False
    ElseIf IsNumeric(ts_b) = False Then
        MsgBox "tham so b PHAI NHAP LA SO"
         NapThamSo = False
    End If
    If NapThamSo = True Then
        a = CDbl(ts_a)
        b = CDbl(ts_b)
     End If
End Function
 

Gọi Class đã viết

 Dim gpt1 As New gptb1
    If gpt1.NapThamSo(6, 2) Then
        MsgBox gpt1.nghiem_x()
    End If