wybor stanu widocznosci z poziomu okna properties

Visible – własność odpowiedzialna za ukrywanie arkusza

Czym jest Visible?

Visible to własność odpowiedzialna za widoczność arkusza i dzisiejsza lekcja będzie właśnie o niej. Temat ten nawiązuje do poprzedniej lekcji o śledzeniu zmian za pomocą VBA. Na kanale YouTube z tym przykładem Wojtek dodał komentarz mówiący o tym, że do pełnej inwigilacji arkusz z RaportemZmian powinien być ukryty.

Nic bardziej słusznego, więc pomyślałem, że opowiem odrobinę o ukrywaniu arkuszy i w tym wypadku bez Visible się nie obejdzie.

Typy widoczności arkusza

Visible jest własnością arkusza, czyli obiektu Sheet (w przypadku arkusza roboczego Worksheet), która posiada trzy typy widoczności:

xlSheetVisible (wartość -1) – to stan, w którym arkusz jest widoczny z poziomu Excela.

xlSheetHidden (wartość 0) – to stan, w którym arkusz jest niewidoczny z poziomu Excela, ale użytkownik może go odkryć. Taki stan można osiągnąć poprzez ukrycie arkusza z poziomu Excela klikając PPM na zakładkę arkusza i wybierając z menu kontekstowego polecenie Ukryj.

odkrywanie arkuszy

xlSheetVeryHidden (wartość 2) – to stan, w którym użytkownik Excela nie może odkryć arkusza jeśli nie przejdzie do Edytora VBA. Arkusz będący mocno ukryty nie będzie widoczny na liście arkuszy ukrytych po kliknięciu PPM na zakładkę arkusza i wybraniu polecenia Odkryj. Będą tam widoczne wyłącznie arkusze ukryte o stanie xlSheetHidden.

Ustawianie wartości dla Visible

Sterowanie własnością Visible odbywa się na dwa sposoby. Po pierwsze można bez problemu zmieniać tę własność w oknie Properties po zaznaczeniu wybranego arkusza na liście projektów. To ostatnia na liście własność, w której po rozwinięciu listy wyboru pojawiają się trzy typy widoczności.

wybor stanu widocznosci z poziomu okna properties

Druga opcja to wykorzystanie VBA czyli stworzenie kawałka kodu, w którym odnosząc się do wybranego arkusza ustawiamy jego widoczność. Dopuszczalne jest używanie nazw np. xlSheetHidden, albo wartości (w tym wypadku 0).

dwie formy wartości dla visible

Żeby stworzyć jakiś fizyczny przykład napiszę makro, w którym wszystkie arkusze, poza aktywnym zostaną ukryte tak, że „zwykły” użytkownik Excela nie będzie w stanie ich odkryć.

Skoro mowa o jakimś zbiorze (w tym wypadku arkuszy) to najlepiej zastosować pętlę For Each, która wykona zaprogramowaną operację na wszystkich arkuszach w zbiorze arkuszy aktywnego pliku.

Na początek tworzę moduł, rozpoczynam procedurę i deklaruję jedną zmienną sh jako obiekt. Ta zmienna jest potrzebna do tego, aby pętla For Each miała do czego się odwoływać poruszając się po kolekcji arkuszy w skoroszycie.

deklaracja zmiennych

Teraz rozpoczynam pętlę, w której dla każdego obiektu sh w zbiorze Sheets, czyli wszystkich typach arkuszy w aktywnym pliku wykonana zostanie operacja.

pętla for each

Założeniem działania tego makra jest ukrycie wszystkich arkuszy poza arkuszem aktywnym więc dopisuję wewnątrz pętli warunek, że nazwa sh musi być różna od nazwy aktywnego arkusza. Jeśli warunek jest spełniony to własność Visible obiektu sh zostanie zmieniona na wartość 2, czyli xlSheetVeryHidden.

warunek dla nazwy arkusza i zmiana wartości visible

Takiego makra można użyć np. przed wysłaniem do kogoś pliku, jeśli chcemy aby odbiorca miał dostęp wyłącznie do konkretnego arkusza.

Jeśli chcesz zobaczyć w jaki sposób tworzę to makro na filmie to sprawdź na YT:

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *