Feb 24 2010

Odkrywanie ukrytego arkusza za pomocą hiperłącza

Posted by Marcin

Niektórzy nazywają to problemem, inni twierdzą, że to logiczne działanie: chodzi o niemożność odkrycia ukrytego arkusza za pomocą przypisanego mu hiperłącza. Osobiście uważam, że to sensowna właściwość, zwłaszcza że istnieje prosty sposób aby to obejść, a co więcej - tak skonfigurować nasz arkusz, aby po odkryciu po kliknięciu w hiperłącze, ukrywał się sam gdy go opuścimy. A oto rozwiązanie (dla Excela 2007).

Wykorzystamy zdarzenie Worksheet_FollowHyperlink, które jest wywoływane kiedy klikniemy w łącze. W obsłudze zdarzenia zawrzemy instrukcję odkrycia wskazywanego arkusza oraz uczynimy go arkuszem aktywnym. Poniższy kod należy umieścić w kodzie tego arkusza, który będzie zawierał nasz(e) łącze(a) - np. w Arkusz1. Otwieramy edytor Visual Basic, klikamy w Project Explorer i dla Arkusza1 wybieramy zdarzenie Worksheet_FollowHyperlink. Następnie wpisujemy w treść obsługi zdarzenia:

 
 
Private Sub Worksheet_FollowHyperlink(ByVal Target
As Hyperlink)
 
Dim strArkusz As String
 
   strArkusz = Left(Target.SubAddress, InStr(1,
Target.SubAddress, "!") - 1)
   Sheets(strArkusz).Visible = True
   Sheets(strArkusz).Select
 
End Sub
 

Teraz możemy w Arkusz1 wstawić linki do dowolnych arkuszy a następnie je ukryć. Po kliknięciu w tak utworzone łącza Excel odkryje ukryte arkusze.

Czas na drugą część zadania: automatyczne ukrywanie arkusza, kiedy przestaje on być aktywny. W tym celu, dla wszystkich arkuszy, które chcemy automatycznie ukrywać (kiedy je odkryjemy klikając w hiperłącze, a później opuścimy), umieszczamy w obsłudze zdarzenia Worksheet_Deactivate ten kod:

 
Private Sub Worksheet_Deactivate()
 
    Me.Visible = xlSheetVeryHidden
 
End Sub
 

Ustawiając właściwość Visible na xlSheetVeryHidden zabezpieczamy arkusz przed odkryciem go z poziomu Excela - teraz może on być odkryty tylko za pomocą VBA (i oczywiście za pomocą naszego hiperłącza).

Tak skonstruowana "aplikacja" działa dość sprawnie: łącza z Arkusza1 odkrywają i przenoszą nas do poszczególnych ukrytych arkuszy, a te - po ich opuszczeniu - znów stają się "głęboko" ukryte.

Powiązane artykuły:

Filed under : VBA, Wszystkie | 1 Comment »

One Response to “Odkrywanie ukrytego arkusza za pomocą hiperłącza”

  1. Beata says:

    z niewielką różnicą wygląda to tak jak u mnie :) Spróbuję Twoim sposobem – dla wprawy.
    Jeszcze raz ogromne dzięki i pozdrawiam serdecznie.

Leave a Reply