Nếu 1 phần mềm chỉ 10 dòng code đổ lại thì không cần suy nghĩ về 2 khái niệm này, nhưng khi viết ứng dụng có thể lên đến 1 nghìn dòng.
Thủ tục (Sub) là một đoạn mã thực thi một hoặc nhiều tác vụ mà không trả về giá trị.
Sub TenThuTuc()
' Mã lệnh ở đây
End Sub
Thủ tục được sử dụng khi bạn muốn thực hiện một hành động nào đó mà không cần trả về giá trị.
Ví dụ như mở form, cập nhật dữ liệu, hoặc thực hiện các thao tác giao diện người dùng.
Ví dụ thủ tục
Sub CapNhatSoLuong()
Dim SoLuong As Integer
SoLuong = 10
MsgBox "Số lượng là: " & SoLuong
End Sub
Hàm (Function) là một đoạn mã có thể thực hiện các tác vụ và trả về một giá trị sau khi thực hiện xong.
Function TenHam() As LoaiDuLieu
' Mã lệnh ở đây
End Function
Hàm được sử dụng khi bạn cần một giá trị trả về sau khi thực hiện các tác vụ. Ví dụ như tính toán, xử lý chuỗi, kiểm tra điều kiện, v.v.
Ví dụ:
Function TinhTong(a As Integer, b As Integer) As Integer
TinhTong = a + b
End Function
Mời bạn xem bảng so sánh:
Tiêu chí | Thủ tục (Sub) | Hàm (Function) |
Định nghĩa | Thủ tục (Sub) là một đoạn mã thực thi một nhiệm vụ cụ thể, không trả về giá trị. | Hàm (Function) là một đoạn mã thực thi và trả về một giá trị. |
Trả về giá trị | Không trả về giá trị. | Trả về một giá trị sau khi thực hiện. |
Cách gọi | Gọi thủ tục thông qua tên thủ tục, không sử dụng giá trị trả về. | Gọi hàm và sử dụng giá trị trả về trong biểu thức hoặc gán cho biến. |
Ví dụ | Sub ShowMessage() MsgBox "Hello" End Sub |
Function Add(a, b) Add = a + b End Function |
Sử dụng trong biểu thức | Không thể sử dụng trong biểu thức (không thể gán giá trị từ thủ tục). | Có thể sử dụng trong biểu thức hoặc gán giá trị cho biến. |
Phạm vi sử dụng | Thường được dùng để thực hiện một hành động, như in thông báo, thay đổi giá trị của các đối tượng. | Thường dùng khi cần thực hiện tính toán và trả về kết quả. |
Có thể gọi trong các công thức Excel | Không thể gọi thủ tục trong công thức Excel. | Có thể gọi hàm trong công thức Excel nếu hàm được khai báo là public. |
Khả năng tái sử dụng | Thủ tục thường thực hiện một hành động duy nhất. | Hàm có thể tái sử dụng giá trị trả về trong nhiều biểu thức. |
Thủ tục có thể được gọi trực tiếp mà không cần sử dụng giá trị trả về.
Sub ChaoMung()
MsgBox "Chào mừng đến với VBA!"
End Sub
Gọi thủ tục:
ChaoMung
Ví dụ gọi thủ tục trong một nút trên Form
Tạo một thủ tục gọi một truy vấn:
Sub ChayTruyVan()
DoCmd.OpenQuery "TenTruyVan"
End Sub
Gán thủ tục này vào sự kiện của nút bấm trên Form:
Mở Form trong chế độ thiết kế.
Chọn nút và mở bảng thuộc tính.
Chọn sự kiện (ví dụ: OnClick), và gán thủ tục ChayTruyVan vào sự kiện đó.
Hàm cần được gọi trong một biểu thức hoặc một câu lệnh gán, vì nó trả về giá trị.
Dim KQ As Integer
KQ = TinhTong(5, 3)
MsgBox "Tổng là: " & KQ
Thủ tục (Sub) thực hiện các tác vụ mà không trả về giá trị.
Hàm (Function) thực hiện các tác vụ và trả về giá trị.
Khi viết mã trong VBA Access, bạn nên chọn sử dụng thủ tục khi chỉ cần thực hiện tác vụ và không cần trả về giá trị, và hàm khi bạn cần trả về giá trị sau khi thực hiện phép toán hoặc xử lý.
Tìm kiếm:
Hiểu có bản hàm và thủ tục trong VBA Access để làm phần mềm linh hoạt hơn