VBA (Visual Basic for Applications) là một công cụ mạnh mẽ trong Excel, giúp tự động hóa và tối ưu công việc. Nhiều người lầm tưởng VBA chỉ dành cho dân IT hay lập trình viên. Thực tế, chỉ cần chút tìm hiểu, bạn cũng có thể tạo ra những thủ thuật VBA hữu ích cho công việc của mình. Bài viết này sẽ hướng dẫn bạn cách viết hàm VBA trong Excel một cách chi tiết và dễ hiểu, kể cả khi bạn chưa từng tiếp xúc với lập trình.
Function (Hàm) trong VBA là gì?
Trong VBA Excel, ngoài việc viết Sub (thủ tục), bạn còn có thể viết Function (hàm). Function VBA hoạt động tương tự như các hàm có sẵn trong Excel (SUM, AVERAGE,…) – nhận đầu vào, xử lý và trả về kết quả. Bạn có thể sử dụng Function VBA trực tiếp trong Excel hoặc trong môi trường VBA, giúp thao tác với dữ liệu một cách tự động và nhanh chóng. Ví dụ, bạn có thể dùng VBA để xóa công thức nhưng vẫn giữ lại kết quả và định dạng trong Excel.
Cú pháp viết hàm VBA
Có hai cách viết Function VBA chính:
- Không chỉ định kiểu dữ liệu trả về:
Function TênHàm( [Danh sách tham số] )
'Nội dung hàm
End Function
- Chỉ định kiểu dữ liệu trả về:
Function TênHàm( [Danh sách tham số] ) As [Kiểu dữ liệu]
'Nội dung hàm
End Function
Lưu ý: Đối với cách viết thứ hai, bạn cần chỉ rõ kiểu dữ liệu trả về (ví dụ: Integer, String, Double…). Bên trong nội dung hàm, phải có dòng gán giá trị cho tên hàm (ví dụ: TênHàm = kết quả
).
Ví dụ thực tế về viết hàm VBA
Để hiểu rõ hơn về cách viết hàm VBA, chúng ta cùng xem qua một số ví dụ cụ thể.
Ví dụ 1: Hàm tính diện tích hình chữ nhật
Thông thường, để tính diện tích hình chữ nhật trong Excel, ta sử dụng hàm PRODUCT.
Hàm PRODUCT trong Excel
Tuy nhiên, nếu muốn tự động hóa việc này hoặc không muốn sử dụng hàm PRODUCT, bạn có thể viết hàm VBA như sau:
Function DienTich(ChieuDai As Double, ChieuRong As Double) As Double
DienTich = ChieuDai * ChieuRong
End Function
Trong đó:
DienTich
: Tên hàm VBA.ChieuDai
,ChieuRong
: Tham số của hàm (kiểu Double – số thực).As Double
: Kiểu dữ liệu trả về của hàm (cũng là Double).DienTich = ChieuDai * ChieuRong
: Gán kết quả phép nhân cho tên hàm.
Sau khi viết hàm VBA này trong VBA Editor, bạn có thể sử dụng nó trực tiếp trong Excel như bất kỳ hàm nào khác. Excel sẽ tự động gợi ý hàm DienTich
khi bạn bắt đầu gõ.
Excel gợi ý hàm tự tạo
Bạn chỉ cần nhập các giá trị chiều dài và chiều rộng vào các ô tương ứng, và hàm DienTich
sẽ tự động tính toán và trả về kết quả.
Kết quả hàm Diện Tích
Ví dụ 2: Hàm tìm dòng cuối cùng có dữ liệu
Việc xác định dòng cuối cùng chứa dữ liệu trong một sheet Excel rất hữu ích cho nhiều thao tác. Trong VBA, có một đoạn code thường được sử dụng:
LastRow = Sheets("Tên_Sheet").Cells(Rows.Count, "A").End(xlUp).Row
Tuy nhiên, thay vì viết lại đoạn code này mỗi lần, bạn có thể tạo một hàm VBA để đơn giản hóa việc sử dụng:
Function LastRow(TenSheet As String, SoCot As Integer) As Long
LastRow = Sheets(TenSheet).Cells(Rows.Count, SoCot).End(xlUp).Row
End Function
Giờ đây, mỗi khi cần tìm dòng cuối cùng có dữ liệu, bạn chỉ cần gọi hàm LastRow
và truyền vào tên sheet và số cột. Ví dụ: LastRow("Sheet1", 1)
sẽ trả về dòng cuối cùng có dữ liệu trong cột A của Sheet1.
Tổng kết
Viết hàm VBA trong Excel không hề khó như bạn nghĩ. Với một chút kiến thức cơ bản và các ví dụ thực tế, bạn có thể tự tạo ra những hàm VBA hữu ích cho công việc của mình. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về cách viết hàm VBA và ứng dụng nó vào thực tế. Đừng ngần ngại khám phá thêm những kiến thức thú vị khác về VBA Excel trên internet và các khóa học trực tuyến.
FAQ – Những câu hỏi thường gặp về hàm VBA
1. Hàm VBA khác gì với hàm có sẵn trong Excel?
Hàm VBA do người dùng tự định nghĩa và viết bằng ngôn ngữ VBA, trong khi hàm có sẵn trong Excel là những hàm được tích hợp sẵn. Hàm VBA cho phép bạn tùy chỉnh chức năng theo nhu cầu cụ thể.
2. Tôi có thể sử dụng hàm VBA trong các file Excel khác không?
Có, bạn có thể sao chép code VBA (bao gồm cả hàm) sang các file Excel khác hoặc lưu chúng thành Add-ins để sử dụng lại nhiều lần.
3. Làm thế nào để học VBA một cách hiệu quả?
Có rất nhiều tài liệu và khóa học trực tuyến về VBA. Bắt đầu với những bài học cơ bản, thực hành thường xuyên và tìm hiểu các ví dụ thực tế là cách học hiệu quả nhất.
4. Tôi có thể debug (gỡ lỗi) hàm VBA như thế nào?
Bạn có thể sử dụng VBA Editor để debug hàm VBA. Đặt breakpoint (điểm dừng) trong code, chạy từng dòng lệnh và kiểm tra giá trị biến để tìm ra lỗi.
5. Tôi cần kiến thức lập trình để học VBA không?
Mặc dù VBA là một ngôn ngữ lập trình, nhưng bạn không cần phải là một lập trình viên chuyên nghiệp để học VBA. Kiến thức cơ bản về lập trình sẽ giúp ích, nhưng bạn hoàn toàn có thể bắt đầu từ con số 0.