Class module là một kỹ thuật nâng cao để người phát triển tạo thêm cho mình những class/đối tượng.
Có 2 lý do sau khiến chúng ta nên sử dụng class:
+ Tạo đối tượng giống nhau.
+ Gán thêm thuộc tính cho một control/đối tượng đã có (như là: Property, Method, Even).
Một ví dụ kinh điển nhất đó là trên Tool đặt phòng họp, trên UserForm nếu có ai đặt phòng họp thì sẽ sinh ra một label mới. Trên Label đó ghi các thông tin ngày giờ, phòng họp, ai đặt, số điện thoại.... Như vậy Label có rất nhiều thuộc tính. Ngoài ra còn có sự kiện double click vào label sẽ hiển thị thông tin này. Do số label là không thể kiểm soát ngay từ đầu, cho nên việc xây dựng hàm double click cho từng label là không khả thi. Lúc này chúng ta phải sử dụng class.
Chúng ta tạo class_sv
trên đó viết code như sau:
Trên Module 1, chúng ta viết code như sau và hãy thử chạy code nhé:
Ta được kết quả như sau:
Có 2 lý do sau khiến chúng ta nên sử dụng class:
+ Tạo đối tượng giống nhau.
+ Gán thêm thuộc tính cho một control/đối tượng đã có (như là: Property, Method, Even).
Một ví dụ kinh điển nhất đó là trên Tool đặt phòng họp, trên UserForm nếu có ai đặt phòng họp thì sẽ sinh ra một label mới. Trên Label đó ghi các thông tin ngày giờ, phòng họp, ai đặt, số điện thoại.... Như vậy Label có rất nhiều thuộc tính. Ngoài ra còn có sự kiện double click vào label sẽ hiển thị thông tin này. Do số label là không thể kiểm soát ngay từ đầu, cho nên việc xây dựng hàm double click cho từng label là không khả thi. Lúc này chúng ta phải sử dụng class.
Chúng ta tạo class_sv
Bạn cần đăng nhập để thấy hình ảnh
trên đó viết code như sau:
Mã:
'===========PROPERTY
Private nme As String
Private diem As String
'-----------------------THUOC TINH: NAME
Public Property Let Name(s As String) 'Ham nhap thong tin cho doi tuong
nme = s
End Property
Public Property Get Name() As String 'Ham truy xuat thong tin tu doi tuong
Name = nme
End Property
'-----------------------THUOC TINH: MARK
Public Property Let Mark(s As String)
diem = s
End Property
Public Property Get Mark() As String
Mark = diem
End Property
Public Function danhgia() As String
If Val(Mark) < 8 Then
danhgia = "NG"
Else
danhgia = "OK"
End If
End Function
'================METHOD
Public Function benkyou() As String 'Phuong thuc danh gia
If danhgia = "NG" Then
benkyou = "Hoan toan khong hoc gi"
Else
benkyou = "Da hoc rat cham chi"
End If
End Function
Bạn cần đăng nhập để thấy hình ảnh
Trên Module 1, chúng ta viết code như sau và hãy thử chạy code nhé:
Mã:
Sub test()
Dim sv As class_sv
Set sv = New class_sv
sv.Name = "Tuhocvba.net"
sv.Mark = "6"
MsgBox sv.benkyou
MsgBox sv.Name
MsgBox sv.Mark
End Sub
Bạn cần đăng nhập để thấy hình ảnh
Ta được kết quả như sau:
Bạn cần đăng nhập để thấy hình ảnh