Khi sử dụng Excel, chúng ta thấy có rất nhiều hàm có sẵn trong đó. Bạn có bao giờ nghĩ rằng bạn cũng có thể tạo riêng cho mình 1 hàm theo ý muốn không? Hãy cùng Học Excel Online tìm hiểu cách viết hàm tự tạo trong Excel bằng VBA ngay nào.
Xem nhanh
Khi viết code trong VBA chúng ta không chỉ viết được các Sub (thủ tục), mà chúng ta còn có thể viết được các Function (chức năng, hàm).
Các Function này có thể sử dụng trong môi trường VBA hoặc trong môi trường Excel. Cách sử dụng Function giống như việc sử dụng hàm trong Excel, do đó có thể gọi Function là các hàm tự tạo trong VBA.
Cú pháp của Function:
Function Tên( [tham số sử dụng] ) [As] [Kiểu giá trị trả về của Function]
Nội dung Function
End Function
Khi viết Function, bạn có thể viết 2 kiểu:
Function Tên( [tham số sử dụng] )
Nội dung Function
End Function
Function Tên( [tham số sử dụng] ) As [Kiểu giá trị trả về của Function]
Nội dung Function
End Function
Hàm bắt buộc phải có tham số sử dụng và Nội dung Function phải chỉ rõ hàm nhận kết quả như thế nào (có dòng Tên hàm = …. trong nội dung)
Để cho dễ hình dung, chúng ta hãy cùng xem một số ví dụ về Function như sau:
Chúng ta biết để tính diện tích của 1 hình chữ nhật, ta lấy chiều rộng * chiều dài.
Trong Excel, hàm thực hiện phép nhân là hàm Product. Chúng ta viết hàm như sau:
Thế nhưng bạn không muốn dùng hàm này, mà muốn gọi 1 hàm có tên là DienTich. Trong Excel không có sẵn hàm này, do đó bạn sẽ tự viết hàm đó trong VBA như sau:
Trong đó:
Khi đã viết xong Function, quay trở lại Excel chúng ta thấy khi viết từ khóa liên quan tới DienTich, Excel sẽ gợi ý cho bạn hàm này:
Gán giá trị vào các tham số của hàm:
Kết quả của hàm là:
Dòng cuối cùng có dữ liệu trong bảng dữ liệu rất hay được sử dụng trong lập trình VBA. Cú pháp thông thường là:
Thay vì việc mỗi lần cần sử dụng chúng ta lại phải viết lại toàn bộ cú pháp, chỉ thay đổi ở Tên Sheet và Số cột thì chúng ta có thể viết Function để cho nhanh hơn, dễ viết hơn:
Khi đó muốn xác định dòng cuối có dữ liệu trong Cột nào, Sheet nào, chúng ta chỉ việc gọi tên Sheet, Số cột trong Function Lastrow là được.
Ngoài ra các bạn có thể tham khảo thêm một số bài viết sau:
Cách tìm dòng cuối có chứa dữ liệu của một cột bằng hàm Match trong Excel
Tự viết hàm của mình nhờ VBA trong Excel
Chuyển công thức Excel sang hàm Vba sử dụng WorkSheetFunction