Trong VBA có 2 định nghĩa đó là Module và 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
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
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