Office Guru

Hétvégi babrálás táblázatkezelőnk hivatkozásai körül

2016. november 12. - Office Guru

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:

hyper01.jpgHa 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.

hyper02.jpgTeljesen 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:

hyper03.jpgVBA-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

hyper04.jpg

hyper05.jpgSokkal 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:

hyper06.jpgHa megcsináljuk az Insert Ribbonfül PivotTable parancsával, akkor a következőt tapasztaljuk:

hyper07.jpgA 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:

hyper08.jpgDe 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:

hyper09.jpgDeklará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

hyper10_1.jpgEzzel 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.

hyper11.jpgSzö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

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr5111952267

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása