Napjainkban már elég ritka az olyan Excel-dashboard, amely nem tartalmaz legalább egy linket, akár egy Home névre hallgató sheetre, akár egy rendszerre mutatva, de sűrűn előfordul az e-mailek használata is. Így ma ismét egy kicsit az Exceles hivatkozásokkal fogunk foglalkozni, amelyek legegyszerűbb alkalmazási módját, a Hyperlink függvényt valószínűleg minden idelátogató ismeri:
Ha nem szeretnénk használni az Insert Ribbonfül beépített Hyperlink funkcióját, akkor arra is van módunk, hogy az Excel-fájlon belül hivatkozzunk mondjuk egy másik sheet egyik cellájára az előbb már idézett Hyperlink formulával. Itt jön képbe a sokszor zavart okozó # karakter, amely a Hyperlink formulában megmutatja a programnak, hogy "házon belül" fogunk linkelni. Azaz példánknál maradva:
=HYPERLINK("#1!A1","1st sheet")
Ez fájlunk "1" névre hallgató sheetjének A1-es cellájára fog hivatkozni, majd a hivatkozásnak a "1st sheet" nevet fogja adni.
Teljesen ugyanezzel a módszerrel tudunk egy nevesített tartományra is lépni:
=HYPERLINK("#Hazaklistaja","Hazaklistaja") - ez például a Hazaklistaja nevezetű rangere fog hivatkozni.
Egy teljesen másik Excel-fájlra hivatkozhatunk a fentebb már említett beépített Insert Ribbonfül Hyperlink funkciójával is, de folytatva eddigi elmélkedésünket, használhatjuk a Hyperlink függvényt továbbra is:
=HYPERLINK("..\Masikexcelfajl.xlsx","MasikExcelFajl")
Ez a formula egy könyvtárral feljebb lép a struktrúrában és abban a folderben fogja megnyitni nekünk a Masikexcelfajl.xlsx névre hallgató fájlt, majd a második paraméterben megadott névre nevezi ezt a hivatkozást.
Na de ha megvan már a sok szép hivatkozásunk és most el akarjuk őket távolítani, akkor mit teszünk?
Ugyebár van az egyik, elég egyszerű módszer, amikor szimplán jobb gombbal kattintunk a cellákon, majd nyomunk egy Remove Hyperlinks parancsot:
VBA-val majdnem ugyanilyen egyszerű a történet, hiszen simán írhatunk rá egy apró kis kódsort, ugyanis ennyi lenne az egész:
Sub Torles()
Selection.Hyperlinks.Delete
End Sub
Sokkal akkor sem bonyolultabb a dolog, ha egy Excel-munkafüzet összes sheetjének összes linkjét szeretnénk eltávolítani, hiszen akkor minden ciklusok egyik legegyszerűbbjére van szükségünk, valami ilyesmire:
Sub Test()
Dim sheet As Worksheet
For Each sheet In ThisWorkbook.Worksheets
sheet.Hyperlinks.Delete
Next
End Sub
De ezeknél az egyszerű kis feladványoknál tudjuk magasabbra is tenni a lécet, hiszen a Pivot-táblák alapvetően nehezen boldogulnak a hivatkozásokkal, mi pedig mégis megpróbálkozunk valahogy legalább látványban linket varázsolni egy ilyen Pivotba.
Ebből a táblából szeretnénk egy Pivot-táblát készíteni:
Ha megcsináljuk az Insert Ribbonfül PivotTable parancsával, akkor a következőt tapasztaljuk:
A Home fül Styles szekciójában található Cell Styles menüpont Hyperlink stílusa segítségével kinézetre linkké tudjuk alakítani:
De ez így még mindig nem kattintható. Egy egyszerű VBA-kódra lesz szükségünk, hogy ez működjön, szóval ALT+F11 lenyomásával lépjünk gyorsan a VBA-editorba, majd a Pivot-táblát tartalmazó sheetünkön felépítünk egy egyszerű kódot.
Első lépésként nem gombnyomásra futtatható makrót fogunk létrehozni, hanem bármelyik Selection change esetén aktivizálódó kódot, azaz a makró akkor fog lefutni, ha valahova "átkattintunk" a sheeten:
Deklaráljunk két változót. Az első egy PivotField típusú változó lesz, ami a Pivot-táblánk mezőit hivatott majd tartalmazni, a második pedig azt mutatja majd meg, hogy éppen melyik mezőt akarjuk ellenőrizni a táblában. Ez utóbbit egyébként fel is tudjuk tölteni, hiszen értelemszerűen az "Oldal" mezőit szeretnénk validálni:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim pivotmezo As PivotField
Dim pivotmezoNev As String
pivotmezoNev = "Oldal"
Hiba esetén menjen a következő lépésre a kódunk:
On Error Resume Next
Ezután állítsuk be a pivotmezo (PivotField típusú) változónk értékét, méghozzá úgy, hogy csak akkor vegyen fel értéket, ha az adott cella egy Pivot-tábla részét képezi, egyébként maradjon üresen és ha üres, akkor ne is csináljon semmit a program. Ezzel azt érjük el, hogy csak Pivot-táblánk celláit vizsgáljuk.
Set pivotmezo = Target.PivotField
If Not pivotmezo Is Nothing Then
Ha a pivotmezo változó Pivot-tábla cellájára mutat, akkor nézzük meg, hogy az adott mező neve a fentebbi pivotmezoNev változóban megadott "Oldal" érték-e. Ha igen, akkor új ablakban nyissa meg az abban a cellában szereplő hivatkozásunkat.
If pivotmezo.Name = pivotmezoNev Then
ThisWorkbook.FollowHyperlink Address:=Target.Value, NewWindow:=True
Ezzel pedig el is készültünk, a stílust alapból átállítottuk Hyperlink-kinézetre, a kis kódunkkal pedig a link kattinthatóvá is válik.
Szövegként:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim pivotmezo As PivotField
Dim pivotmezoNev As String
pivotmezoNev = "Oldal"
On Error Resume Next
Set pivotmezo = Target.PivotField
If Not pivotmezo Is Nothing Then
If pivotmezo.Name = pivotmezoNev Then
ThisWorkbook.FollowHyperlink Address:=Target.Value, NewWindow:=True
End If
End If
End Sub