giaiphap
==(^o^)==
Chủ đề này không mới, nhưng hiện tại chưa thấy ai chia sẻ trong diễn đàn Giải pháp Excel (Hoặc có thể có rồi nhưng “tui” chưa thấy). Nay “tui” chia sẻ cách tạo gợi ý của hàm trong Excel. Như các bạn thấy khi mình gõ một hàm có sẳn trong Excel (Ví dụ Hàm VLOOKUP) thì sẽ có một gợi ý cho chúng ta biết hàm có công dụng gì, có bao nhiêu tham số, … Nhưng hàm chúng ta viết bằng VBA thì sẽ không thấy gợi ý này.

Nếu bạn nào biết C# thì vấn đề này rất dễ dàng, nhưng bạn nào chưa biết thì có thể làm theo cách sau bằng cách sử dụng thư viện có sẳn ExcelDna:
Đầu tiên bạn vào trang web https://github.com/Excel-DNA/IntelliSense/releases và tải một trong 2 file (“tui” khoanh đỏ), tùy theo phiên bản Ofice của bạn mà tải cho phù hợp nhé.

Sau khi tải về bạn đặt vào chung thư mục với file Excel mà mình muốn tạo hàm, sau đó mở file Excel bạn cần tạo hàm lên.
Vấn đề trước tiên là bạn sẽ tạo một Sheet mới và đặt tên cho sheet này là “_IntelliSense_” (Tên này lằ bắt buộc không được phép đặt tên khác nhé), trên Sheet này bạn nhập ô A1 là FunctionInfo ô B1 bạn gõ số 1.

Tiếp đến bạn nhấn Alt+F11 để mở cửa sổ soạn code VBA lên.
Bạn tạo một Module mới và gõ code vào như sau:
Lưu ý là ExcelDna.IntelliSense.xll và ExcelDna.IntelliSense64.xll là tên 2 thư viện đã tải về và đặt cùng thư mục với tệp tin Excel nhé.
Bạn tiếp tục tạo thêm một Module mới nửa và viết thêm 2 hàm như sau:
Bạn tiếp tục nháy đúp chuột vào ThisWorkbook và thêm vào đoạn code sau:

Xong bạn đóng cửa sổ VBA lại và trở về giao diện Sheet “_IntelliSense_” để tạo gợi ý cho 2 hàm vừa tạo, sẳn tiện tạo luôn gợi ý (Việt hóa hàm có sẳn của Excel) cho hàm IFERROR có sẳn của Excel như sau:

Xong bạn có thể ẩn đi Sheet “_IntelliSense_” để người khác khỏi nhìn thấy (Mục đích là để người dùng không lỡ tay chỉnh sửa hay xóa nhầm dữ liệu gợi ý này).
Cuối cùng bạn đóng file này đi và mở lại nhập thử hàm TinhDienTich hoặc ChaoExcelDna hoặc IFERROR xem kết quả sẽ thấy nó hiện gợi ý cho mình.

Bạn có thể tham khảo cách làm chi tiết ở Link sau:
Liên kết: https://www.youtube.com/watch?v=-BIOzl1igXU

Nếu bạn nào biết C# thì vấn đề này rất dễ dàng, nhưng bạn nào chưa biết thì có thể làm theo cách sau bằng cách sử dụng thư viện có sẳn ExcelDna:
Đầu tiên bạn vào trang web https://github.com/Excel-DNA/IntelliSense/releases và tải một trong 2 file (“tui” khoanh đỏ), tùy theo phiên bản Ofice của bạn mà tải cho phù hợp nhé.

Sau khi tải về bạn đặt vào chung thư mục với file Excel mà mình muốn tạo hàm, sau đó mở file Excel bạn cần tạo hàm lên.
Vấn đề trước tiên là bạn sẽ tạo một Sheet mới và đặt tên cho sheet này là “_IntelliSense_” (Tên này lằ bắt buộc không được phép đặt tên khác nhé), trên Sheet này bạn nhập ô A1 là FunctionInfo ô B1 bạn gõ số 1.

Tiếp đến bạn nhấn Alt+F11 để mở cửa sổ soạn code VBA lên.
Bạn tạo một Module mới và gõ code vào như sau:
Mã:
Option Explicit
Const xllName = "ExcelDna.IntelliSense.xll"
Const xllName64 = "ExcelDna.IntelliSense64.xll"
Public Sub DangKyDLL()
On Error GoTo ErrorHandler
Dim filePath As String
If m_IsExcelx64 Then
filePath = ThisWorkbook.Path & "\" & xllName64
Else
filePath = ThisWorkbook.Path & "\" & xllName
End If
Application.RegisterXLL filePath
DoEvents
Exit Sub
ErrorHandler:
Debug.Print Err.Number, Err.Description
End Sub
Function m_IsExcelx64() As Boolean
Dim l As Long
l = -1
On Error Resume Next
l = Application.Hinstance
On Error GoTo 0
If l = -1 Then
m_IsExcelx64 = True
Else
m_IsExcelx64 = False
End If
End Function
Bạn tiếp tục tạo thêm một Module mới nửa và viết thêm 2 hàm như sau:
Mã:
Option Explicit
Function ChaoExcelDna()
ChaoExcelDna = "Chào m" & ChrW(7915) & "ng b" & ChrW(7841) & "n " & ChrW(273) & ChrW(7871) & "n v" & ChrW(7899) & "i ExcelDna"
End Function
Public Function TinhDienTich(dai As Double, rong As Double) As Double
TinhDienTich = dai * rong
End Function
Mã:
Option Explicit
Private Sub Workbook_Open()
On Error GoTo thoat
Call DangKyDLL
thoat:
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo thoat
Application.Run "AutoClose"
thoat:
End Sub

Xong bạn đóng cửa sổ VBA lại và trở về giao diện Sheet “_IntelliSense_” để tạo gợi ý cho 2 hàm vừa tạo, sẳn tiện tạo luôn gợi ý (Việt hóa hàm có sẳn của Excel) cho hàm IFERROR có sẳn của Excel như sau:

Xong bạn có thể ẩn đi Sheet “_IntelliSense_” để người khác khỏi nhìn thấy (Mục đích là để người dùng không lỡ tay chỉnh sửa hay xóa nhầm dữ liệu gợi ý này).
Cuối cùng bạn đóng file này đi và mở lại nhập thử hàm TinhDienTich hoặc ChaoExcelDna hoặc IFERROR xem kết quả sẽ thấy nó hiện gợi ý cho mình.

Bạn có thể tham khảo cách làm chi tiết ở Link sau: