Start > CONT-EVO MAP > CONT-EVO MAP - Instrukcja on-line > CONT-EVO MAP - Budowa aplikacji w VBA > Przykłady

Przykłady

Nakładające się obszary

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.

Rozpakuj archiwum, zanim rozpoczniesz pracę.
Wszystkie przykłady są omówione na bazie pliku, który potrzebuje referencji do komercyjnej wersji CONT-EVO MAP, w którym kod źródłowy jest dostępny i można z niego korzystać w dalszej pracy z tą wersją aplikacji.

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":

Widoczne są w nim: funkcja i procedura:
  • 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.

Wszelkie operacje na mapie powinny rozpoczynać i kończyć się użyciem tych właśnie poleceń.

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ń):

Operacje na osadzonych w aplikacji obiektach są możliwe, jeśli znamy zasady nazewnictwa i okresleń typów obiektów. Poszczególne typy obiektów mają następujące zasady tworzenia swoich nazw:
  • 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