Sự khác biệt giữa một function và một sub trong Excel VBA là: một function có
thể trả về một giá trị, trong khi một Sub thì không, nó thực hiện các công việc
nào đó do người lập trình mong muốn bằng các đoạn code. Function và sub rất hữu
ích khi chương trình VBA bạn viết có kích thước lớn, xử lý nhiều công việc.
Function
Nếu bạn muốn Excel VBA thực hiện một nhiệm vụ mà trả về một giá
trị, ta dùng function. Đặt một function vào một module (Trong Visual Basic
Editor, nhấn Insert, Module). Ví dụ, chức năng với tên Area.
Function Area(x As Double, y As Double) As Double
Area = x * y
End Function
Area = x * y
End Function
Giải
thích: Hàm này có hai tham số (argument) kiểu Double và trả về giá trị kiểu
Double. Bạn có thể gọi hàm trong code của bạn để lấy kết quả trả về như mong
muốn (ở đây là x * y).
Bây giờ
ta có thể tham khảo chức năng này (gọi hàm này) trong đoạn code của bạn bằng
cách sử dụng tên hàm và truyền giá trị cho các đối số.
Đặt Command
Button vào worksheet của bạn và paste đoạn code bên dưới:
Dim z As Double
z = Area(3, 5) + 2
MsgBox z
z = Area(3, 5) + 2
MsgBox z
Giải
thích: Hàm Area trả về một giá trị, bạn có để dùng giá trị này trong code của
bạn. Ta dùng một biến khác (z) để làm điều đó: Lấy giá trị của hàm Area(3, 5)
cộng thêm 2, và hiển thị giá trị của biểu thức (z) bằng MsgBox.
Kết quả khi click vào Command Button:
Kết quả khi click vào Command Button:
Sub
Nếu bạn
muốn Excel VBA thực hiện một số hành động nào đó, bạn có thể sử dụng Sub. Đặt
một Sub vào một module (Trong Visual Basic Editor, nhấn Insert, Module). Ví dụ
Sub Area.
Sub Area(x As Double, y As Double)
MsgBox x * y
End Sub
MsgBox x * y
End Sub
Giải
thích: sub này có hai đối số (kiểu Double ). Nó không trả về một giá trị cụ
thể, bạn có thể tham chiếu Sub này (gọi sub) từ các nơi khác trong code của bạn
bằng cách sử dụng tên của Sub và truyền vào giá trị cho các đối số.
Đặt Command
Button vào worksheet của bạn và paste đoạn code bên dưới:
Area 3, 5
Kết quả
khi click vào Command Button:
Bạn có thể thấy sự khác biệt
giữa các function và Sub? Function trả về giá trị 15. Ta có thể cộng thêm 2 cho
kết quả này và hiển thị giá trị cuối cùng. Còn khi gọi sub chúng ta không sử
dụng kết quả (15) để xử lý được, bởi vì Sub không trả về một giá trị! Sub thực
hiện hành động mà người lập trình yêu cầu.
No comments:
Post a Comment