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é
Option Compare Database
Public HoTen As String
Public Lop As String
Public Diem As Double
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
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
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
Trong VBA (Visual Basic for Applications), Module và Class đều là nơi bạn viết mã, nhưng chúng phục vụ các mục đích khác nhau. Dưới đây là bảng so sánh để bạn dễ hiểu:
Đặc điểm | Mô tả |
---|---|
Loại | Standard Module (Mô-đun tiêu chuẩn) |
Tên trong Project | Module1, Module2... |
Chứa gì | Thủ tục (Sub ), Hàm (Function ), biến dùng chung (Public ), hằng số |
Phạm vi sử dụng | Toàn bộ project nếu dùng Public , hoặc riêng trong module nếu dùng Private |
Mục đích | Chứa các thủ tục, hàm tiện ích, xử lý nghiệp vụ chung |
Khả năng tạo đối tượng | ❌ Không thể tạo đối tượng từ module |
Đặc điểm | Mô tả |
---|---|
Loại | Class Module (Mô-đun lớp) |
Tên trong Project | Class1, Customer, Student... |
Chứa gì | Các thuộc tính (Property ), phương thức (Sub , Function ), biến nội bộ |
Phạm vi sử dụng | Phải khai báo và khởi tạo đối tượng để sử dụng |
Mục đích | Dùng để định nghĩa đối tượng có trạng thái và hành vi (Object-Oriented Programming - OOP) |
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