Przykład obrazuje, w jaki sposób za pomocą języka VBA poradzić sobie z prezentacją dwóch nakładających się wystąpień na jednym obszarze.
Dzięki temu możliwe jest przygotowanie raportu, na podstawie którego w prosty sposób możemy odnaleźć lokalizacje, które np. są obsługiwane przez większą liczbę reprezentantów w celu np. eliminacji takiej sytuacji.
W celu prezentacji przygotowana została wizualizacja zawierająca powiaty oraz odpowiednie podłączenie danych o wystąpieniu wybranego przedstawiciela (określeni zostali w zakresie "F2:F4") w określonym regionie.
Plik zawiera też przykładowe dane o przypisaniu reprezentanta do klientów (arkusz: "dane2") wraz z powiązaniem odpowiedniego ID regionu.
Przykładowe pliki do pobrania są w dwóch wersjach:
Pobierz
plik zawierający omawiane przykłady,
który nie wymaga aplikacji CONT-EVO MAP dla działania, jednak kod jest zabezpieczony hasłem.
Pobierz
plik zawierający omawiane przykłady,
który wymaga aplikacji CONT-EVO MAP w wersji komercyjnej i zdefiniowania referencji dla działania, jednak kod jest otwarty.
Spójrzmy na arkusz nazwany "nakladanie_obszarow":
Na arkuszu mamy już przygotowaną mapę powiatów, która została pierwotnie pokolorowana przy użyciu funkcjonalności "Koloruj wg cech i kolorów komórek", przy czym zakres danych to "C2:C381", natomiast cechy zostały określone w zakresie "F2:F4" i odpowiednio pokolorowane.
Przejdźmy do środowiska VBA przy użyciu klawiszy Lewy Alt + F11 i wyświetlmy zawartość modułu "nakladanie_obszarow":
- wyszukaj_pionowo_wszystkie - funkcja, która działa podobnie do wyszukaj.pionowo, ale zwraca wszystkie występienia szukanej wartości, oddzielone średnikiem.
- kartogram - procedura, która odpowiada za odświeżenie i kolorystykę mapy
Czynności kolejno wykonywane przez aplikację zostały odpowiednio skomentowane w kodzie (jest to zielony tekst poprzedzony apostrofem).
W kolejnych liniach kodu mamy zaprezentowane w działaniu standardowe polecenia języka VBA dla Excel oraz wybranych funkcji VBA dostępnych w komercyjnej wersji CONT-EVO MAP, które omówione są w tym miejscu.
Działanie aplikacji sprowadza się do przejścia przez listę obiektów i sprawdzenia, czy dla danego regionu występuje jeden lub więcej reprezentantów.
W przypadku napotkania większej niż jeden liczby przypisanych reprezentantów, jeśli jest ich dwóch - następuje wstawienie innego typu kolorowania (z wykorzystaniem dwóch kolorów), jeśli więcej: obszar jest oznaczany kolorem czerwonym.
Każda interakcja z aplikacją jest poprzedzona poleceniem CEM.cont_evo_map_before_edit_map - nie dotyczy to wykorzsytania wbudowanej funkcji odświeżania, użytej na początku "CEM.cont_evo_map_refresh"
oraz zakończona poleceniem CEM.cont_evo_map_after_edit_map, które odpowiednio przygotowują mapę do edycji oraz kończą tryb edycji.
Przejdźmy do sprawdzenia działania makra z osadzoną mapą. Jeśli zmienimy którekolwiek dane z przypisaniami w arkuszu "dane2" i naciśniemy przycisk "Odśwież", mapa zostanie odświeżona z uwzględnieniem aktualnych wartości (w tym przypadku przypisań):
- obiekt (typ: taki sam jak w opisie typu obiektu, czyli np. "powiat") - id obiektu z arkusza i "_obj" - czyli np. województwo dolnośląskie ma id="terc_0201" - obiekt je prezentujący będzie miał więc nazwę "terc_0201_obj"
- etykieta z nazwą regionu (typ: "name label") - id obiektu z arkusza i "_name_l" - obiekt ją prezentujący będzie miał więc nazwę "terc_0201_name_l"
- etykieta liczbowa (typ: "number label") - id obiektu z arkusza i "_nl" - obiekt ją prezentujący będzie miał więc nazwę "terc_0201_nl"
- etykieta opisowa (typ: "defined label") - id obiektu z arkusza i "_dl" - obiekt ją prezentujący będzie miał więc nazwę "terc_0201_dl"
- wykres przypisany do obiektu (typ: "chart") - id obiektu z arkusza i "_ch" - obiekt go prezentujący będzie miał więc nazwę "terc_0201_ch"
- pozycja legendy (typ: "colors legend item") - określenie "number_legend_" i kolejny numer