Nội dung chính
Việc lặp đi lặp lại một đoạn code trong khi viết VBA làm chúng ta phải viết lại rất nhiều, mà code không được sáng, không dễ đọc, nhìn không được chuyên nghiệp, code bị rối vậy có phương án nào giải quyết bài toán đó không? Cách giải quyết là các bạn tạo ra Function trong Excel (Hàm tự tạo) để giải quyết vấn đề. Cùng Gitiho tìm hiểu nhé!
Tham gia ngay khóa học Tuyệt đỉnh VBA - Viết code trong tầm tay
Function(hàm) là tập hợp các câu lệnh để thực hiện công việc nào đó, hàm có thể gọi trong nhiều chỗ, thường là hàm chung để người dùng gọi ra thực hiện công việc khác nhau.
Function có thể được sử dụng lại nhiều lần, chỉ việc gọi Function ra là có thể sử dụng lại được.
Function có thể sử dụng được toàn bộ hệ thống nếu viết dưới dạng Add-ins rồi mang đi cài vào các máy.
Xem thêm: Hướng dẫn cách cài đặt hoặc gỡ bỏ Add-in trong Excel
Tất cả những hàm trong Excel đều được gọi là một Function.
Function trong Excel chia thành 2 loại Function có đối số và Function không có đối số.
Cú pháp của Function
Function TenFunction(doiso as kieudulieu) as kieuketqua
// Code tạo ra Functon
TenFunction = ??
End function
Trong cú pháp tạo Function phần kiểu dữ liệu trả ra kết quả có thể có hoặc không? Tuỳ từng trường hợp các bạn có thể đưa ra kiểu kết quả trả ra cho Function
Lưu ý: Tên Function phải là tên duy nhất và không trùng với biến, hàm có sẵn trong Excel
Option Explicit
Function ChuHoa(Chuoi As String) As String
ChuHoa = Application.WorksheetFunction.Trim(UCase(Chuoi))
End Function
Với hàm tự tạo trên sau khi viết xong hàm bạn có thể ra ngoài bảng tính Excel gõ từ khoá =ChuHoa("Gitiho") >> GITIHO
Function tự tạo có thể có tham số truyền vào hoặc không.
Xem thêm: Tìm hiểu về cách tự tạo hàm Excel trong VBA
Function NgayDiaDanh(So As Variant, Optional DiaDanh As String = "")
Dim bdate As Date
If Trim(So) = "" Or So = 0 Then
NgayDiaDanh = ", ngày tháng n" &ChrW(462) & "m"
Exit Function
Else
Dim mngay As String, mthang As String, mnam As String
If Day(So) < 10 Then
mngay = "0" & Day(So)
Else
mngay = Day(So)
End If
If Month(So) < 3 Then
mthang = "0" & Month(So)
Else
mthang = Month(So)
End If
mnam = Year(So)
If (DiaDanh = "") Then
NgayDiaDanh = "Ng" &
ChrW(224) & "y " & mngay & " Th" &
ChrW(225) & "ng " & mthang & " N" & ChrW(462)
& "m " & mnam
Else
NgayDiaDanh = DiaDanh & "
,Ng" & ChrW(224) & "y " & mngay & "
Th" & ChrW(225) & "ng " & mthang & "
N" & ChrW(462) & "m " & mnam
End If
Exit Function
End If
End Function
Tham số Optional trong truyền vào của Function sẽ cho chúng ta có thể truyền tham số hoặc không truyền tham số vào hàm hoặc có thể cố định tham số. Như Function ở trên là Function chúng ta có thể truyền hoặc không truyền tham số vào trong hàm chúng ta có thể gõ hàm là
= NgayDiaDanh(ngày) hoặc = NgayDiaDanh( ngày,”Gitiho”)
Lưu ý: Kiểu truyền vào là kiểu nào thì các bạn truyền kiểu dữ liệu đó nhé.
Trong tham số trên Gitiho kiểu string nên địa danh cần truyền kiểu string vào, các bạn chưa hiểu rõ có thể xem lại trong khoá VBAG01 - Tuyệt đỉnh VBA để biết rõ về kiểu dữ liệu nhé.
Hướng dẫn tìm kiếm và lọc dữ liệu tự động bằng Textbox trong Excel VBA
Hướng dẫn hiện thẻ Developer để ghi Macro hoặc viết code VBA trong Excel
Unicode tiếng việt khi viết trong VBA
HƯỚNG DẪN CÁCH VIẾT HÀM VBA TRONG EXCEL
Cách sử dụng hàm MsgBox() để tạo hộp thông báo với VBA
Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA
0 Bình luận