Câu hỏi này đã được hỏi trước đây , nhưng mỗi lần câu trả lời được chấp nhận chỉ đơn giản là từ chức để cung cấp mô tả chức năng sử dụng Application.MacroOptions
( VBA6 ) ( VBA7 ), nhưng thông tin này không thực sự xuất hiện dưới dạng chú giải công cụ, vì vậy nó không giải quyết được vấn đề của tôi.
Mục đích
Điều mà tất cả chúng ta mong muốn là có thể xác định các chức năng tùy chỉnh bằng bất kỳ phương tiện nào (bổ trợ VBA, VSTO hoặc COM) và cung cấp cho người dùng lợi ích của mô tả cửa sổ bật lên / mẹo công cụ về chức năng và các tham số của nó, như xuất hiện cho mọi hàm Excel tích hợp sẵn, nội dòng hoặc trong thanh công thức:
Câu trả lời được chấp nhận rộng rãi cho nhu cầu này là không thể có các chức năng tùy chỉnh, nhưng tôi muốn thử thách niềm tin đó.
Vấn đề
Hiện tại, điều tốt nhất mà tôi từng thấy mọi người làm là xác định các hàm (thường sử dụng lệnh gọi MacroOptions ở trên) để khi hiển thị hộp thoại hàm (nút fx trong thanh công thức) các mô tả hàm và tham số của chúng xuất hiện như bên dưới:
Như bạn thấy, đây là một hàm phức tạp với nhiều tham số. Nếu người dùng không biết về hộp thoại "đối số hàm" này và cách đưa nó lên, và thay vào đó chỉ quen thuộc với chú giải công cụ tiêu chuẩn của Excel, họ sẽ chỉ thấy tên công thức và không có thêm trợ giúp nào:
Mà họ không có cơ hội cung cấp chính xác các thông số cần thiết. (Tất nhiên, nếu không đọc tài liệu thì không người dùng nào làm được.)
Giờ đây, người dùng thành thạo có thể biết rằng bằng cách gõ Ctrl+ Shift+ A, họ sẽ được cấp một danh sách tự động hoàn thành các tham số chức năng như sau:
Nhưng tất nhiên, chúng ta có cùng một vấn đề như trên đó là người dùng excel tiêu chuẩn sẽ chỉ quen với hành vi mặc định từ hình ảnh đầu tiên và có thể sẽ không bao giờ học được tính năng đó.
Đến thời điểm này cần phải rõ lý do tại sao điều này là không đủ và chúng tôi muốn những gì mà mọi chức năng tích hợp sẵn có - mẹo công cụ nội tuyến cho người dùng biết cách sử dụng chức năng.
Trêu chọc
Lúc đầu, tôi có thể đã bị thuyết phục rằng điều này đơn giản là không thể ngoại trừ các hàm ứng dụng Excel gốc. Bổ trợ và VBA là các tính năng mở rộng và mẹo công cụ này có thể đơn giản là không thể mở rộng. Nhưng lý thuyết đó bị thách thức bởi sự tồn tại của tiện ích bổ trợ Analysis Toolpak. Chắc chắn, nó được tích hợp trong Microsoft, nhưng ANALYS32.xll là một add-in XLL độc lập giống như những add-in có thể được tạo bằng VB, C, C ++ và C #. Chắc chắn rồi, khi XLL này được tải vào ứng dụng, các hàm mà nó cung cấp có cùng các mẹo công cụ của các hàm excel gốc:
Chắc chắn nếu thông tin này bằng cách nào đó được mã hóa trong tệp XLL này và được chuyển sang Excel, thì có cách nào để sao chép nó với Phần bổ trợ của riêng chúng tôi? Bây giờ tôi sẽ bắt đầu tự học một chút về dịch ngược và xem liệu tôi có thể thiết kế ngược lại bất cứ điều gì đang diễn ra trong toolpak phân tích hay không.
Cách bạn có thể giúp
Tôi gần như chắc chắn rằng tôi đã nghiên cứu tất cả các thông tin công khai về vấn đề này. Tuy nhiên, nếu ai đó biết điều gì đó mà tôi không biết có thể giúp ích cho việc này, hãy thoải mái tham gia. Tôi rất không quen với dlls / xlls được biên dịch theo kỹ thuật ngược, vì vậy nếu ai đó muốn mở bản sao cục bộ của họ của Analysis32.xll và tìm ra những gì đang xảy ra với các định nghĩa chức năng tùy chỉnh của nó, tôi sẽ rất có nghĩa vụ. Nếu không, tôi sẽ tiếp tục tự mình đào sâu vào điều này cho đến khi tôi đi đến tất cả các ngõ cụt và báo cáo lại những gì tôi tìm thấy.