Lista rozwijana jest kontrolką, która niewątpliwie wzbogaca interfejs aplikacji EXCEL/VBA. W odróżnieniu od standardowego pola kombi, możemy do niej dodać ikonę. Jak przygotować taką kontrolkę i jak wstawić ją na własną wstążkę? O tym przeczytasz w tym artykule.
Kontrolka Dropdown
Bohaterem dzisiejszego odcinka jest tzw. dropdown czyli lista rozwijana. Na pierwszy rzut oka przypomina swojego bardziej popularnego kuzyna ComboBoxa, ale są między nimi różnice.
W przypadku ComboBoxa możemy podać wartość spoza listy – jest ona edytowalna. W przypadku kontrolki dropdown lista jest zamknięta. Oprócz tego, do kontrolki dropdown możemy dodać dowolną ikonę.
Kod XML
Tworzenie takiej listy rozwijanej z poziomu dodatku RibbonX Visual Designer jest dziecinnie proste.
Poniższy kod generuje listę rozwijaną z nazwą pięciu programów pakietu Microsoft Office. Po wybraniu jednej z nich, nazwa wpisywana jest do aktywnych komórek w arkuszu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<ribbon > <tabs > <tab id="TabSwiatExcela" label="Świat Excela"> <group id="groupMicrosoftOffice" label="Produkty Microsoft Office"> <dropDown id="ddProduktyOffice" image="office_png" label="Wybierz aplikację" getSelectedItemIndex="ddProduktyOffice_getSelectedItemIndex" onAction="ddProduktyOffice_OnAction"> <item id="Excel" imageMso="MicrosoftExcel" label="Excel"/> <item id="Word" imageMso="FileSaveAsWord97_2003" label="Word"/> <item id="Access" imageMso="MicrosoftAccess" label="Access"/> <item id="Power_Point" imageMso="MicrosoftPowerPoint" label="Power Point"/> <item id="Outlook" imageMso="MicrosoftOutlook" label="Outlook"/> </dropDown > </group > </tab > </tabs > </ribbon > </customUI > |
Analiza kodu
Poniżej kilka rzeczy, na które warto zwrócić uwagę w kodzie:
- Kontrolka dropdown zawiera parametr image. Oznacza, to że korzysta z zewnętrznej grafiki.
- Kontrolka dropdown zawiera dwa wywołania zwrotne. Pierwsze getSelectedItemIndex ustala, który element listy będzie aktywny przy starcie pliku. 0 oznacza pierwszy element, 1 drugi, 2 trzeci itd. Pominięcie tego wywołania wyświetli nam listę, na której żaden element nie będzie aktywny. Drugie makro po prostu reaguje na zmianę zaznaczenia i zapamiętuje identyfikator wybranego elementu i jego pozycję na liście.
- Elementy listy posiadają widoczną etykietę i grafikę. Odwołują się do parametru imageMso, a to oznacza, że korzystają z wbudowanych ikon całego pakietu Office.
Screen z kontrolką
Kod makra
1 2 3 4 5 6 7 8 9 |
Public Sub ddProduktyOffice_getSelectedItemIndex(control As IRibbonControl, _ ByRef returnedVal) ' ' Code for getSelectedItemIndex callback. Ribbon control dropDown returnedVal = 0 End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 |
Public Sub ddProduktyOffice_OnAction(control As IRibbonControl, _ id As String, _ index As Integer) ' ' Code for onAction callback. Ribbon control dropDown If TypeOf Selection Is Excel.Range Then Selection.Value = Replace(id, "_", " ") End If End Sub |