Một Function trong VBA (chức năng do người dùng tự định nghĩa) là một nhóm các mã tái sử dụng, được gọi là bất cứ nơi nào trong chương trình của bạn. Điều này giúp loại bỏ sự việc viết mã giống nhau lặp đi lặp lại. Điều này cho phép các lập trình viên phân chia một chương trình lớn thành một số chức năng nhỏ và dễ quản lý.
Ngoài các Function sẵn có, VBA cũng cho phép người dùng tạo ra các Function của riêng bạn.
Nội dung chính
Cú pháp của Function trong VBA
Không có định nghĩa kiểu trả về cụ thể:
Function FunctionName([parameter-list]) statement 1 statement 2 statement 3 ....... statement n End Function
Định nghĩa kiểu trả về cụ thể:
Function FunctionName([parameter-list]) As [data-type] statement 1 statement 2 statement 3 ....... statement n End Function
Trong đó:
[parameter-list]: là danh sách tham số, có thể có không, một hoặc nhiều.
[data-type]: là kiểu giá trị trả về của function, có thể định nghĩa hoặc không.
Đặc điểm của Function trong VBA
Một Function trong VBA có thể có giá trị trả về hoặc không. Điều này là cần thiết nếu bạn muốn Function trả về một giá trị.
Ví dụ: bạn có thể truyền hai số vào trong một Function và sau đó bạn mong muốn Function đó trả về tích của hai số đã cho.
Ví dụ Function trong VBA
Ví dụ: viết một Function tính tích của hai số, với tham số thứ hai là tùy chọn (có thể nhập hoặc không). Nếu tham số thứ hai không được truyền vào thì Function này trả về tích của số thứ nhất với chính nó. Ngược lại nếu tham số thứ hai được truyền vào thì Function này trả về tích của số thứ nhất và thứ hai.
Chỉ rõ kiểu giá trị trả về của function là Double:
Function findArea(Height As Double, Optional Width As Variant) As Double If IsMissing(Width) Then findArea = Height * Height Else findArea = Height * Width End If End Function
Hoặc không cần chỉ rõ kiểu giá trị trả về của function:
Function findArea(Height As Double, Optional Width As Variant) If IsMissing(Width) Then findArea = Height * Height Else findArea = Height * Width End If End Function
Gọi một Function trong VBA
Bạn có thể gọi lại function trong một Functon khác hoặc trong một Sub khác, hoặc trong một Cell của Worksheet.
Gọi một Function trong một Functon khác hoặc trong một Sub khác
Ví dụ:
Sub ClickButton() Dim area1 As Double Dim area2 As Double area1 = findArea(10, 5) area2 = findArea(10) MsgBox "aria1 = " & area1 & ", area2 = " & area2 End Sub
Kết quả:
Gọi một Function trong một Cell của Worksheet
Để gọi một Function, hãy gọi hàm bằng cách sử dụng tên hàm như thể hiện trong ảnh chụp màn hình sau.
Kết quả: