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é!
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.
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ố.
Function không có đối số gồm những hàm như Now, Today...
Function có đối số chia làm 2 loại một loại có giá trị mặc định một loại không
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.
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é:
Tóm lại, Function là hàm chúng ta có thể tự tạo theo mục đích nào đó, tuỳ theo mục đích công việc của chúng ta. Gitiho.com hi vọng bài viết này sẽ hữu ích với bạn và giúp bạn làm việc hiệu quả hơn. Đừng quên theo dõi chúng mình để đọc những bài viết vô cùng bổ ích nhé.
Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…
Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho
Hãy nhấn vào Học thử hoặc Đăng ký ngay!