czwartek, 10 października 2013

Podręczna paleta kolorów wypełnienia

Wyobraźmy sobie sytuację, w której chcemy ułatwić użytkownikowi nanoszenie kolorów w określonym obszarze arkusza. Odpowiednie kolory mogą oznaczać status danego produktu, zamówienia, tworzyć kolorystyczną informacje o postępie zdarzenia, itp. Ot np. spójrzmy na poniższy układ prostej tabeli wraz z wyświetlonym szybkim menu podręcznym przyspieszającym kolorowanie.


Poniżej w kilku krokach prezentuję technikę tworzenia niniejszego rozwiązania.

Krok 1. Procedura tworząca i wyświetlająca menu podręczne z paletą kolorystyczną. Procedura ta wykorzystuje tradycyjne techniki tworzenia menu oparte o obiekty/kolekcje CommandBar/CommandBars.
01Sub RightClickMenu_Utwórz()
02   
03    Dim tmpCB As CommandBar
04    Dim tmpCBpop As CommandBarPopup
05       
06    'na wszelki wypadek
07    RightClickMenu_Usuń
08       
09    Set tmpCB = Application.CommandBars.Add("KolorMenu", msoBarPopup, , True)
10    Set tmpCBpop = tmpCB.Controls.Add(ID:=1691)
11    tmpCB.ShowPopup
12 
13    'usuwamy po wykonaniu operacji
14    RightClickMenu_Usuń
15End Sub

Krok 2. Jak łatwo zauważyć w powyższej procedurze tworzone menu jest tymczasowe. Niezbędna jest więc procedura usuwania paska zaraz po tym gdy zostanie wykorzystany.
1Sub RightClickMenu_Usuń()
2    On Error Resume Next
3    Application.CommandBars("KolorMenu").Delete
4End Sub

Krok 3. Wykorzystamy obsługę zdarzenia BeforeRightClick w celu wyświetlenia menu tylko w kolumnie C odpowiedniego arkusza. Co ważne, poniższe rozwiązanie wyświetli nasze nowe menu po kliknięciu prawym klawiszem myszy. Nadal pozostawimy użytkownikowi dostęp do standardowego menu podręcznego o ile wybierze na klawiaturze konfigurację Shift + F10.
1Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
2    If Target.Column = 3 Then
3        Cancel = True
4        RightClickMenu_Utwórz
5    End If
6End Sub

I na koniec mała wskazówka- wykorzystana w kroku 1 metoda .ShowPopup posiada dodatkowe, opcjonalne parametry, które umożliwiają wskazanie miejsca, w którym ma zostać wyświetlone nasze menu podręczne.
Tworzenie interakcji i rozwiązań ułatwiających pracę z Excelem (i innymi aplikacjami Office) jest ważną umiejętnością każdego programisty co staram się często podkreślać prowadząc kurs z programowania w VBA.

Brak komentarzy:

Prześlij komentarz