VBA – Sub Function một số ví dụ đơn giản

Share Button

Các đoạn chương trình đều thường được viết trong Sub hoặc Function. Khác nhau cơ bản của Sub của Function là Function trả về giá trị còn Sub thì không. Khi chương trình lớn và có nhiều chức năng nhỏ bạn có thể phân các chức năng vào các sub các function để quản lý cho dễ.

Cấu trúc của Sub và Function

Sub tên_sub(các tham số)
....
End sub
Function tên_sub(các tham số)
....
tên_sub=giá trị
End Function

Có thể thấy cấu trúc Sub và Function gần giống nhau. Điều chú ý là trong function sẽ có thêm bước gán giá trị cho Function.

Sub Function có tham số

Một số chương trình khi hoạt động có thể được truyền vào tham số để tính toán. Ta có thể xét ví dụ sau với 2 giá trị a, b là biến được truyền vào.

Function tong(a as integer, b as integer)
tong = a+b
end function

Sub tong(a as integer, b as integer)
Range("A1") = a + b
end sub

Xét thấy nội dung bên trong Sub và function gần như không khác gì nhau.

ByVal và ByRef

Khi khai báo biến truyền vào ta có thể khai báo byval hoặc byref vào trước tên biến.
Ví dụ: Function tim(byval a as interger) ; Function tim(Byref a as integer).
Khi bạn thay đổi giá trị a trong function tìm thì với byval a khi thoát khỏi function biến a sẽ được xóa dữ liệu. Còn khi khai báo byref biến a sẽ vẫn được lưu trữ và có thể sử dụng lại cho các sub function khác.
Với biến khai báo Byref là mặc định của vba nên thường khi sử dụng bạn không cần khai báo chỉ cần viết gọn như sau function tim(a as integer)

Gọi lại sub function

Để gọi lại function ta sử dụng phép gán còn sub ta sử dụng call.
Ví dụ gọi lại function tong:

 tinhtoan = tong(3,4)

Ví dụ gọi lại sub tong

 call tong(3,4)

 

Share Button

Comments

comments