Telefonszámunk: 1-472-0679

Tartománynevek elrejtése – VBA

2016-01-16 - horvimi - Kategória: Kijelölések, Makró általános, Tartományok kezelése
Hivatkozott Excel verzio:

A professzionális Excel felhasználók gyakran dolgoznak névtartományokkal. Ez ugyebár azt jelenti, hogy egy tartományt elnevezünk, és a képletekben a tartomány címe helyett a nevét használjuk. A tartományok elnevezését a szerkesztőléc bal oldalán lévő Név mezőben vagy a Képletek szalagon található Névkezelőben lehet megadni.

Nevek_megjelenese

A Dinamikus névtartományokról olvashatsz ebben a korábbi anyagban.

A nevek elrejtése

De mi van akkor, ha nem szeretném, hogy bárki lássa, vagy módosítsa melyik név melyik tartományoz tartozik? Simán előfordulhat.

A megoldás az, hogy egy makróparanccsal egy nevet, egy kis makró programmal pedig akár az összes nevet elrejthetjük. Ehhez át kell lépni a makrószerkesztő ablakába, és megnyitni a Parancs ablakot:

  1. ALT-F11, Ez megnyitja a Makrószerkesztó ablakát.
  2. majd Ctrl+G, Ez megnyitja a Makró parancsablakot, un. Immediate ablakot (Excel makró parancs felület)

Egy név eltüntetése

Írd be ezt a parancsot

Activeworkbook.Names("valami").visible = False / True

Egy-nev-elrejtese
Ha az egyenlőség jel jobb oldalára FALSE kerül, akkor elrejti, ha TRUE, akkor láthatóvá teszi a megadott nevet.

Minden név elrejtése

Ehhez pedig egy rövid kis modult kell írni, majd lefuttatni:

Sub HideAllNames()
 Dim n As Name
     For Each n In ActiveWorkbook.Names
           If n.Visible = True Then n.Visible = False
     Next n
 End Sub
Az elrejtett tartományokra név szerint ettől függetlenül lehet hivatkozni, a képletekben!

Mire jó ez?

Arra, hogy véletlenül vagy szándékosan ne lehessen annyira egyszerűen visszafejteni vagy elrontani a modell-t. Az elrejtett nevek nem fognak látszódni a Név mezőben és a Névkezelőben sem.

Természetesen ezen tudás birtokában az elrejtett nevek sem lesznek biztonságban!

Elrejtett nevek megjelenítése

Sub ShowAllNames()
 Dim n As Name
     For Each n In ActiveWorkbook.Names
           If n.Visible = False Then n.Visible = True
     Next n
 End Sub

Lássuk hogy megy ez

Vélemény, hozzászólás?