Czasami chcemy, aby pewne operacje w Excelu wydarzyły się automatycznie, a dokładniej po określonym zdarzeniu obsługiwanych przez kod VBA, czyli po tzw. evencie.

Eventy arkusza i skoroszytu

Przykładowo za każdym razem, kiedy plik zostanie otwarty, chcemy wyświetlić komunikat powitalny. Gdy zmienimy wartość w komórce, chcesz dodać komentarz z informacją o dacie zmiany. Chcemy zablokować możliwość wydrukowania pliku. Te wszystkie sytuacje (eventy), i wiele innych, można obsłużyć za pomocą eventów.

Tworzenie przykładowego eventu otwarcia pliku

W tym artykule zajmiemy się przykładowymi eventami pliku i arkusza. Zacznijmy od informacji, gdzie możemy dodać kod, który obsłuży interesujące nas zdarzenia.

W pierwszej kolejności musimy otworzyć edytor VBA (skrót Alt + F11). Następnie musimy się upewnić, że jest włączony Project Explorer (Rysunek 1). Możemy go otworzyć z menu View (niezależnie od wersji językowej Excela edytor VBA jest po angielsku) albo za pomocą skrótu klawiszowego Ctrl + R.

Następnie w naszym przykładowym projekcie (pliku) musimy kliknąć dwa razy w Ten_skoroszyt. Spowoduje to otwarcie modułu z kodem dla danego pliku. W tym module chcemy rozwinąć listę po lewej stronie i wybrać element Workbook (Rysunek 2).

Spowoduje to automatyczne dodanie domyślnego kodu do obsługi eventu dla otwarcia pliku: Private Sub Workbook_Open(). Jeśli chcesz dodać obsługę innego eventu, wystarczy rozwinąć teraz listę po prawej stronie (Rysunek 3). Na lewej liście musi być wybrany Workbook.

Teraz możemy dodać precyzyjny kod w evencie otwarcia pliku. Zakładamy, że chcemy zapytać użytkownika o hasło administratora. Jeśli użytkownik poda prawidłowe hasło, arkusz z Panelem Administratora ma być widoczny, w przeciwnej sytuacji będzie mocno ukryty (nie będzie go można odkryć od strony Excela, a jedynie za pomocą odpowiedniego kodu albo edytując właściwości arkusza w Edytorze VBA).

Private Sub Workbook_Open()
Dim passwd As String
passwd = InputBox(Environ("Username") & " podaj hasło administratora")
If passwd = "hasło" Then
Worksheets("PanelAdministratora").Visible = xlSheetVisible
Else
Arkusz1.Visible = xlSheetVeryHidden
End If
End Sub

W tym kodzie użyliśmy odwołania do nazwy użytkownika (Environ("Username")) oraz na dwa różne sposoby odwołaliśmy się do arkusza PanelAdministratora. Pierwsze odwołanie korzysta z kolekcji Worksheets, czyli roboczych arkuszy. Potrzebuje ona nazwy zakładki arkusza do prawidłowej identyfikacji arkusza. Tę nazwę można łatwo zmienić od strony Excela. Dlatego w kodzie VBA częściej możesz zobaczyć odwołanie się do wewnętrznej nazwy arkusza, którą można edytować jedynie w Edytorze VBA. W naszym przykładzie nie zmieniliśmy domyślnej wewnętrznej nazwy, więc brzmi ona Arkusz1. Jeśli chciałbyś ją zmienić, musisz zaznaczyć konkretny arkusz w Project Explorerze, a następnie w Properties Window (skrót F4) zmienić właściwość (Name) (Rysunek 4).

Pamiętaj, że jeśli zmienisz nazwę zakładki arkusza w Excelu albo wewnętrzną nazwę arkusza, to będziesz musiał też ręcznie zmienić te nazwy w kodzie VBA, ponieważ nie zmienią się one automatycznie.

W powyższym kodzie zwróć też uwagę na przypisanie wartości do właściwości Visible. Nie są tu użyte konkretne liczby, ale stałe (xlSheetVisible i xlSheetVeryHidden). Jest to spowodowane tym, że nazwę stałej łatwiej zrozumieć człowiekowi (szczególnie jeśli zna język angielski), niż zapamiętać, że 2 oznacza arkusz bardzo ukryty. Z kolei wartość liczbową dużo łatwiej zrozumieć i obsłużyć systemowi.

Pozostałe 65% artykułu dostępne jest dla zalogowanych użytkowników serwisu.

Jeśli posiadasz aktywną prenumeratę przejdź do LOGOWANIA. Jeśli nie jesteś jeszcze naszym Czytelnikiem wybierz najkorzystniejszy WARIANT PRENUMERATY.

Zaloguj Zamów prenumeratę Kup dostęp do artykułu

Źródło: Controlling i Rachunkowość Zarządcza nr 01/2025

Ulubione Drukuj

Zobacz również

Analiza wrażliwości w MS Excel – wyznaczanie optymalnej ceny sprzedaży

Analiza wrażliwości w MS Excel – wyznaczanie optymalnej ceny sprzedaży

Jedną z podstawowych umiejętności, jakie powinien nabyć każdy ekonomista (choć nie tylko), jest budowa modelu analizy wrażliwości oraz umiejętność określenia najkorzystniejszego wariantu przy danych założeniach i w danych warunkach. Niniejszy artykuł prezentuje metodę wyznaczenia optymalnej ceny sprzedaży produktu przy różnych założeniach. Zaprezentowany model, uwzględniając dane kosztowe oraz planowaną wielkość sprzedaży, wyznaczy graniczny poziom jednostkowej ceny sprzedaży, czyli poziom, przy którym przedsiębiorstwo pokryje koszty produkcji. Na bazie tego poziomu model wskaże optymalną cenę maksymalizującą zysk przedsiębiorstwa.

Czytaj więcej

„Unpivotowanie” – najlepsza funkcja Power Query?

„Unpivotowanie” – najlepsza funkcja Power Query?

Często mówi się, że Power Query to narzędzie do prostych transformacji zestawu danych, które byłyby osiągalne również w Excelu, lecz dużo trudniejsze do wykonania. I tak faktycznie jest. Jednakże istnieje jedna z funkcji, która stanowi jedną z największych (o ile nie największą) zaletę Power Query – „unpivotowanie”. Każdy użytkownik Excela wie, jak ważne są pivoty, czyli tabele przestawne. Tu mówimy o działaniu odwrotnym. Jak działa w praktyce? Przekonajmy się.

Czytaj więcej

Polecamy

Przejdź do

Partnerzy

Reklama

Polityka cookies

Dalsze aktywne korzystanie z Serwisu (przeglądanie treści, zamknięcie komunikatu, kliknięcie w odnośniki na stronie) bez zmian ustawień prywatności, wyrażasz zgodę na przetwarzanie danych osobowych przez EXPLANATOR oraz partnerów w celu realizacji usług, zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Usługa Cel użycia Włączone
Pliki cookies niezbędne do funkcjonowania strony Nie możesz wyłączyć tych plików cookies, ponieważ są one niezbędne by strona działała prawidłowo. W ramach tych plików cookies zapisywane są również zdefiniowane przez Ciebie ustawienia cookies. TAK
Pliki cookies analityczne Pliki cookies umożliwiające zbieranie informacji o sposobie korzystania przez użytkownika ze strony internetowej w celu optymalizacji jej funkcjonowania, oraz dostosowania do oczekiwań użytkownika. Informacje zebrane przez te pliki nie identyfikują żadnego konkretnego użytkownika.
Pliki cookies marketingowe Pliki cookies umożliwiające wyświetlanie użytkownikowi treści marketingowych dostosowanych do jego preferencji, oraz kierowanie do niego powiadomień o ofertach marketingowych odpowiadających jego zainteresowaniom, obejmujących informacje dotyczące produktów i usług administratora strony i podmiotów trzecich. Jeśli zdecydujesz się usunąć lub wyłączyć te pliki cookie, reklamy nadal będą wyświetlane, ale mogą one nie być odpowiednie dla Ciebie.