Cách tạo hàm (function) mới trong Excel VBA

Tạo hàm Excel VBA

Chắc hẳn khi dùng Excel ai cũng sẽ biết dùng một số hàm cơ bản của Excel như các hàm SUM, SUMIF, COUNT, COUNTIF, AVERAGE, … Các hàm cơ bản này chính là một trong những yếu tố tạo nên sự kỳ diệu của bảng tính Excel.

Tuy nhiên, trong quá trình làm việc với Excel, bạn có thể gặp những trường hợp mà các hàm cơ bản không giải quyết được hoặc phải lồng ghép nhiều hàm cơ bản khá phức tạp. Trong trường hợp đó, khi bạn biết sử dụng VBA (Visual Basic for Applications) thì mọi chuyện sẽ đơn giản hơn nhiều.

Bài viết này sẽ hướng dẫn bạn cách tạo hàm VBA thông qua ví dụ cụ thể.

Bài toán: làm sao để viết hàm VBA tách lấy tên từ họ và tên đầy đủ?

Tách lấy tên từ họ và tên đầy đủ
Tách lấy tên từ họ và tên đầy đủ

Bước 1: mở cửa sổ để viết (code) hàm VBA bằng cách nhấn tổ hợp phím tắt Alt+F11. Cửa sổ soạn thảo code VBA hiện lên như hình sau:

Cửa sổ soạn thảo code VBA
Cửa sổ soạn thảo code VBA

Bước 2: Thêm Module để viết code bằng cách click chuột phải vào cửa sổ bên trái (Project Explorer), chọn menu “Insert“, rồi chọn menu “Module“.

Bước 3: Viết code. Bạn click đúp vào Module1 ở phía dưới cửa sổ Project Explorer, trong cửa sổ viết code của Module1 bạn có thể bắt đầu viết code cho hàm VBA của mình.

Bước 4: Viết hàm VBA. Nhắc lại hàm VBA ở đây là hàm mà các bạn có thể gọi nó trong công thức của các ô (cell) Excel giống như bạn sử dụng các hàm SUM, SUMIF, COUNT,…

Sau đây mình sẽ hướng dẫn các bạn viết hàm VBA LayTen để lấy tên từ họ và tên đây đủ.

Trước tiên, đây là hàm LayTen đầy đủ:

Function LayTen(ByVal HoVaTen As String) As String
    Dim KetQua As String, a() As String
    KetQua = HoVaTen
    If HoVaTen <> "" Then
        a = Split(HoVaTen, " ")
        KetQua = a(UBound(a))
    End If
    LayTen = KetQua
End Function

Giải thích code:

Để khai báo một hàm VBA đơn giản với biến và giá trị trả về là String (Text), ta khai báo theo cấu trúc:

Function TênHàm(ByVal TênBiến As String) As String
    Dim KếtQuả As String
    '(... code gì đó ở đây để cho ra KếtQuả ...)
    TênHàm = KếtQuả 'Xuất KếtQuả ra cho hàm TênHàm
End Function

Với hàm LayTen, code được giải thích như sau:

Function LayTen(ByVal HoVaTen As String) As String

    'Khai báo biến
    Dim KetQua As String, a() As String

    'Đoạn code này để lấy tên từ HoVaTen và gán cho KetQua
    KetQua = HoVaTen 'đầu tiên, cứ cho Ten bằng HoVanTen đã
    If HoVaTen <> "" Then  'Nếu HoVaTen khác rỗng
        a = Split(HoVaTen, " ") 'Tách các phần trong HoVaTen bởi dấu cách (SPACE)
        KetQua = a(UBound(a)) 'Gán phần cuối cùng tách được cho KetQua: tên ở cuối cùng
    End If

    'Xuất KetQua ra cho hàm LayTen
    LayTen = KetQua
End Function

Sau khi viết code hàm VBA xong, ta có thể gọi hàm đó trong công thức của Excel:

Author: autoDN

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *