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.
Odpowiedzi:
Wysłałem projekt weryfikujący koncepcję do GitHub jako projekt Excel-DNA IntelliSense , wdrażając go.
Używając klas automatyzacji interfejsu użytkownika do monitorowania odpowiednich zdarzeń interfejsu użytkownika programu Excel, odpowiedni formularz jest wyświetlany.
Kod jest zapakowany jako dodatek Excel-DNA i działa na moim komputerze Excel 2013 / Windows 8. Testowałem na jednej innej konfiguracji (64-bitowy program Excel 2010 w systemie Windows Server 2008) i miałem poważne problemy.
Dla funkcji C # zdefiniowanej za pomocą atrybutów Excel-DNA w następujący sposób:
otrzymujemy zarówno opis funkcji
a wybierając funkcję, otrzymujemy pomoc dotyczącą argumentów
Wygląda ładnie, ale nadal jest bardzo niestabilny, działa tylko na moim komputerze i czasami powoduje awarię programu Excel. Ale to może być początek ...
Aktualizacja 9 maja 2014:
Zrobiłem pewien postęp, zastanawiając się, jak sprawić, by argument help działał w starszych wersjach Excela i Windows. Jednak nadal wymaga sporo pracy, aby wszystko było niezawodne. Każdy, kto chciałby w tym pomóc, powinien skontaktować się bezpośrednio ze mną.
Aktualizacja 18 czerwca 2016 r .:
Obecnie testowana jest obsługa funkcji Excel UDF IntelliSense zarówno dla dodatków Excel-DNA, jak i funkcji VBA. Zobacz stronę Wprowadzenie w GitHub, aby uzyskać instrukcje.
źródło
Co powiesz na
Czy to jest dopuszczalne?
To trochę brzydkie, ale łatwiejsze.
źródło
Co to jest XLL?
Jak rozwijasz XLL?
Gdzie mogę znaleźć krótki przewodnik dotyczący tworzenia prostego XLL?
Jak otrzymuję podpowiedzi?
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
Niestety, dodatek Analysis Toolpak również nie ma etykietek.
Moje rozwiązanie było błędne, ale oryginalny plakat zawierał błędne informacje. Wyświetlanie obrazu z BINOMDIST, jeśli jego link wyraźnie wskazuje, że nie jest to funkcja ANALYS32.xll.
Oznacza to, że próbowałem rozwiązać niemożliwe pytanie. Ponieważ nie ma XLL, który może zrobić to, o co prosił plakat. Jeśli znajdziesz wersję programu Excel, która wyświetla podpowiedzi dotyczące XLL, daj mi znać.
O to, o co pytał plakat, próbując naśladować zachowanie XLL, jestem pewien, że moja odpowiedź była najbardziej poprawna w odniesieniu do tego, co zrobi ANALYS32.xll.
źródło