Poszukiwanie niestandardowej podpowiedzi funkcji programu Excel

To pytanie zostało zadane przed , ale za każdym razem akceptowana odpowiedź jest po prostu rezygnacją z podawania opisów funkcji za pomocą Application.MacroOptions (VBA6) (VBA7), ale ta informacja nie pojawia się jako tooltip, więc nie rozwiązuje mojego problemu.

Cel

Wszyscy pragniemy być w stanie definiować niestandardowe funkcje za pomocą dowolnych środków (dodatek VBA, VSTO lub COM) i dać użytkownikowi korzyści wynikające z wyskakującego okienka/podpowiedzi opis funkcji i jej parametrów, jak pojawia się dla każdej wbudowanej funkcji Excel, w linii lub na pasku formuły:

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

Powszechnie akceptowaną odpowiedzią na tę potrzebę jest to, że nie jest to możliwe dla funkcji niestandardowych, ale chciałbym zakwestionować to przekonanie.

Problem

Obecnie najlepsze, jakie widziałem, to definiowanie funkcji (często za pomocą powyższego wywołania Makro) tak, aby przy wywoływaniu funkcji okno dialogowe (przycisk fx na pasku formuły) ich funkcje i opisy parametrów pojawiają się jak poniżej:

Tutaj wpisz opis obrazka

Jak widać, jest to skomplikowana funkcja z wieloma parametrami. Jeśli użytkownik nie jest świadomy tego dialogu "argumenty funkcji" i jak go przywołać, a zamiast tego jest zaznajomiony tylko ze standardową etykietą programu Excel, zobaczy tylko nazwę formuły i nie będzie dodatkowej pomocy: {]}

Tutaj wpisz opis obrazka

Z którym nie mają szans na poprawne dostarczenie wymagane parametry. (Bez czytania dokumentacji, czego oczywiście żaden użytkownik nigdy nie robi.)

Teraz zaawansowany użytkownik może to wiedzieć wpisując Ctrl+Shift+A , otrzymają automatycznie uzupełnioną listę parametrów funkcji jak tak:

Tutaj wpisz opis obrazka

Ale oczywiście mamy ten sam problem jak powyżej, który polega na tym, że standardowi użytkownicy Excela będą przyzwyczajeni tylko do domyślnego zachowania z Pierwszego Obrazu i prawdopodobnie nigdy się o tym nie dowiedzą cecha.

Powinno być jasne, dlaczego to nie wystarczy i chcemy tego, co ma każda wbudowana funkcja - in-line tool-tip, która mówi użytkownikowi, jak korzystać z funkcji.

The Tease

Na początku mogłem być przekonany, że to po prostu nie jest możliwe, z wyjątkiem natywnych funkcji aplikacji Excel. Dodatki i VBA to funkcje rozszerzalności, a ta podpowiedź może po prostu nie być rozszerzalna. Teoria ta jest jednak kwestionowana przez istnienie dodatek Analysis Toolpak. Pewnie, jest zbudowany w Microsofcie, ale ANALIZA32.xll jest samodzielnym dodatkiem XLL, podobnie jak te, które mogą być produkowane w VB, C, C++ i C#. Oczywiście, gdy XLL zostanie załadowany do aplikacji, funkcje , które udostępnia, mają te same wskazówki dotyczące natywnych funkcji Excela:

Tutaj wpisz opis obrazka

Z pewnością, jeśli ta informacja jest w jakiś sposób zakodowana w tym pliku XLL i przekazana do Excela, jest sposób, aby odtworzyć ją za pomocą naszych własnych dodatków? I ' m w momencie, w którym mam zamiar zacząć uczyć się trochę o dekompilacji i widząc, czy mogę inżynierii wstecznej, co dzieje się w analysis toolpak.

Jak Możesz Pomóc

Jestem prawie pewien, że zbadałem wszystkie publicznie dostępne informacje o tym problemie. Jeśli ktoś wie coś, czego ja Nie wiem, co może w tym pomóc, zapraszam do dzwonienia. Jestem bardzo zaznajomiony z Reverse-engineering skompilowane DLL / xlls, więc jeśli ktoś ma ochotę otworzyć swoją lokalną kopię Analiz32.xll i zastanawiając się, co się dzieje z niestandardowymi definicjami funkcji, byłbym bardzo zobowiązany. W przeciwnym razie, będę grzebał w tym sam, dopóki nie znajdę wszystkich ślepych zaułków i nie zgłoszę tego, co znajdę.
Author: Community, 2013-06-03

3 answers

Wysłałem projekt proof-of-concept do GitHub jako projekt Excel-DNA IntelliSense , wdrażając to.

Używając klas automatyzacji interfejsu użytkownika do monitorowania odpowiednich zdarzeń interfejsu użytkownika programu Excel, w razie potrzeby wyświetlany jest formularz.

Kod jest zawinięty jako dodatek Excel-DNA i działa na moim komputerze Excel 2013 / Windows 8. Testowałem na innej konfiguracji (64-bitowy Excel 2010 na Windows Server 2008) i miałem poważne problemy.

Dla funkcja C# zdefiniowana za pomocą atrybutów Excel-DNA, takich jak:

[ExcelFunction(Description = 
    "A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
    [ExcelArgument(Name = "Augend", 
                   Description = "is the first number, to which will be added")] 
    double v1,
    [ExcelArgument(Name = "Addend", 
                   Description = "is the second number that will be added")]     
    double v2)
{
    return v1 + v2;
}

Otrzymujemy zarówno opis funkcji

Opis Funkcji

I wybierając funkcję, otrzymujemy argument help

Argument Help

To wygląda ładnie, ale to wszystko nadal bardzo flaky, działa tylko na moim komputerze i czasami zawiesza Excela. To może być dobry początek...


Aktualizacja 9 Maja 2014:

Zrobiłem pewien postęp, zastanawiając się, jak sprawić, by argument help działał pod starszymi Wersje Excel i Windows. Jednak nadal wymaga sporo pracy, aby wszystko było niezawodne. Każdy, kto chciałby w tym pomóc, powinien skontaktować się ze mną bezpośrednio.


Aktualizacja 18 Czerwca 2016:

Obsługa Excel UDF IntelliSense zarówno dla dodatków Excel-DNA, jak i funkcji VBA jest obecnie testowana. Zobacz stronę Getting Started na Githubie, aby uzyskać instrukcje.

 39
Author: Govert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-19 18:22:00

A może

  1. Przechwytywanie wprowadzania tekstu po naciśnięciu klawisza zdarzenia komórki. like this
  2. Sprawdź, czy tekst pasuje do funkcji niestandardowych.
  3. jeśli pasuje, Pokaż coś takiego jak etykieta lub kształt, aby udawać podpowiedź. like this

Czy to jest dopuszczalne?

To jest trochę brzydkie, ale łatwiejsze.

 1
Author: Clxy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:20

Co to jest XLL?

XLL jest biblioteką DLL, która eksportuje kilka procedur, które są wywoływane przez Excel lub Menedżer dodatków Excel. http://msdn.microsoft.com/en-us/library/office/bb687861.aspx

Jak rozwijasz XLL?

Excel XLL SDK z Visual C++ (lub cokolwiek, co może skompilować bibliotekę DLL i wywołać procedury SDK)

Gdzie znajdę krótki poradnik do tworzenia prostego XLL?

Http://support.microsoft.com/kb/178474

Jak zdobyć podpowiedzi?

  1. zaimplementuj swoją funkcję jako procedurę i wyeksportuj ją
  2. implementacja i eksport procedury xlAutoOpen (void) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
  3. xlAutoOpen musi tylko wywołać xlfRegister - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
  4. dla podpowiedzi, szczególna uwaga dla: pxArgumentText, pxFunctionHelp, pxArgumentHelp1

Niestety dodatek Analysis Toolpak również nie ma podpowiedzi.

Moje rozwiązanie było złe, ale z błędnymi informacjami zamieszczonymi przez oryginalny plakat. Pokazanie obrazu z BINOMDIST, jeśli jego link wyraźnie pokazuje, że nie jest to funkcja ANALIZA32.xll.

To znaczy, że próbowałem rozwiązać niemożliwe pytanie. Ponieważ nie ma XLL, który mógłby zrobić to, o co prosił plakat. Jeśli znajdziesz wersję Excela, która pokazuje podpowiedzi XLLs, proszę daj mi znać.

Co do tego, o co pytał plakat, próbując naśladować zachowanie XLL, jestem pewien, że moja odpowiedź była najbardziej poprawna w stosunku do tego, co ANALIZA32.xll tak.

 0
Author: Marcos Zolnowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-10 22:27:38