To pytanie został poproszony przed , ale za każdym razem Zaakceptowanych odpowiedź jest po prostu rezygnacja dostarczenie opisów funkcyjnych za pomocą Application.MacroOptions
( VBA6 ) ( VBA7 ), ale informacja ta w rzeczywistości nie pojawiają się podpowiedzi, więc to nie rozwiązuje mojego problemu.
Cel
Wszyscy pragniemy mieć możliwość definiowania funkcji niestandardowych w dowolny sposób (dodatek VBA, VSTO lub COM) i dawać użytkownikowi korzyści w postaci wyskakującego / podpowiedzi do opisu funkcji i jej parametrów, jak pojawia się dla każdej wbudowanej funkcji programu Excel, w wierszu lub na pasku formuły:
Powszechnie akceptowaną odpowiedzią na tę potrzebę jest to, że niestandardowe funkcje nie są możliwe, ale chcę podważyć to przekonanie.
Problem
Obecnie najlepsze, co widziałem, to definiowanie funkcji (często przy użyciu powyższego wywołania MacroOptions), tak aby podczas wywoływania okna dialogowego funkcji (przycisk fx na pasku formuły) ich opisy funkcji i parametrów wyglądały jak poniżej:
Jak widać, jest to skomplikowana funkcja z wieloma parametrami. Jeśli użytkownik nie jest świadomy tego okna dialogowego „argumenty funkcji” i nie wie, jak je wywołać, a zamiast tego zna tylko standardową podpowiedź programu Excel, zobaczy tylko nazwę formuły bez dodatkowej pomocy:
Dzięki temu nie mają szans na poprawne podanie wymaganych parametrów. (Bez czytania dokumentacji, czego oczywiście żaden użytkownik nigdy nie robi.)
Teraz zaawansowany użytkownik może wiedzieć, że wpisując Ctrl+ Shift+ A, otrzyma automatycznie uzupełnianą listę parametrów funkcji, taką jak ta:
Ale oczywiście mamy ten sam problem, co powyżej, polegający na tym, że standardowi użytkownicy programu Excel będą przyzwyczajeni tylko do domyślnego zachowania z pierwszego obrazu i prawdopodobnie nigdy nie nauczyli się tej funkcji.
W tym momencie powinno być jasne, dlaczego to nie wystarczy i chcemy tego, co ma każda wbudowana funkcja - wbudowanej podpowiedzi, która mówi użytkownikowi, jak używać tej funkcji.
The Tease
Na początku mogłem być przekonany, że nie jest to po prostu możliwe, z wyjątkiem natywnych funkcji aplikacji Excel. Dodatki i język VBA to funkcje rozszerzalności, a ta wskazówka narzędziowa może po prostu nie być rozszerzalna. Jednak ta teoria jest kwestionowana przez istnienie dodatku Analysis Toolpak. Jasne, jest wbudowany w Microsoft, ale ANALYS32.xll to samodzielny dodatek XLL, podobnie jak te, które można utworzyć w VB, C, C ++ i C #. Rzeczywiście, po załadowaniu tego XLL do aplikacji funkcje, które udostępnia, mają te same wskazówki, co natywne funkcje programu Excel:
Z pewnością, jeśli te informacje zostaną w jakiś sposób zakodowane w tym pliku XLL i przesłane do programu Excel, czy istnieje sposób na ich odtworzenie za pomocą naszych własnych dodatków? Jestem teraz w punkcie, w którym zamierzam zacząć uczyć się trochę dekompilacji i sprawdzić, czy mogę odtworzyć wszystko, co dzieje się w pakiecie narzędzi do analizy.
Jak możesz pomóc
Jestem prawie pewien, że zapoznałem się ze wszystkimi publicznie dostępnymi informacjami na temat tego problemu. Jeśli ktoś wie coś, czego nie wiem, a co może w tym pomóc, nie krępuj się. Nie jestem zaznajomiony z inżynierią wsteczną skompilowanych bibliotek dll / xlls, więc jeśli ktoś ma ochotę otworzyć lokalną kopię Analysis32.xll i zastanawiając się, co się dzieje z jego definicjami funkcji niestandardowych, byłbym bardzo zobowiązany. W przeciwnym razie będę się w to zagłębiał, dopóki nie trafię we wszystkie ślepe zaułki i nie zdam raportu, co znalazłem.