Újévi munkalapos megjelenítő illetve elrejtő makró

2016. január 01. - Office Guru

Remélhetőleg mindenkinek jól telt 2015 utolsó és 2016 első napja eddig, itt most afféle bemelegítő jelleggel egy aprócska makróval indítjuk az új évet, amely nem fog mást csinálni, mint egy Excel-fájlban, ahol minden hónapunk külön sheeten szerepel, mindig csak azt a sheetet jeleníti meg megnyitáskor, amelyik hónapban éppen vagyunk. Tényleg elég egyszerű kis kód, de erre a napra talán elég is lesz ennyi.

Szóval adott a következő Excel-fájl és benne 12 sheet:

640.jpgAnnyit szeretnénk csak, hogy mostantól minden egyes megnyitáskor csak az adott hónap sheetje legyen látható, a többi legyen rejtett. Úgyhogy most menjünk a VBA-editorba és Workbookunk Open (megnyitási) eseményéhez rendeljünk hozzá egy kódot, amit el is kezdünk szépen feltölteni, szokás szerint első lépésként a változók, konstans értékek létrehozásával. Most amire szükségünk lesz, az az, hogy betöltsük sheetjeink számát egy változóba:

AllSheets = Worksheets.Count

Illetve az kell még, hogy egy változóba betöltsük a mai dátumot a sheetjeink megnevezése szerinti formátumban, tehát jelen esetben a hárombetűs hónap megnevezéssel:

currentperiod = Format(Date, "mmm")

Jegyezzük meg, hogy VBA-ban Date utasítással kapjuk vissza a mai dátumot (csak dátumot, időhöz Time, időhöz és dátumohoz Now parancs kell), Format utasítással pedig arra a formátumra tudjuk formázni, amilyenre akarjuk. Ez utóbbi egyébként egy rendkívül hasznos és sokat tudó kis utasítás, vannak már előre elnevezett formátumok (például a Long Date) és mi is definiálhatjuk a saját verziónkat, ráadásul nagyjából bármire használható.

641.jpgHa ez megvan, akkor nagyjából már csak egy For...Next ciklusra van szükségünk, amely egy IF vizsgálatot fog végrehajtani annyiszor, ahány sheetünk van. A megszokott módon, tehát az első sheettől kezdve az AllSheets változónkban meghatározott darabszámig nézzük meg, hogy a Sheetünk neve megegyezik-e a fentebb már deklarált currentperiod változóval és ha nem, akkor rejtse el az adott munkalapot.

Amit ehhez tudnunk kell, az az, hogy egy sheet nevét a Sheets.Name paranccsal tudjuk megkapni (és persze még több más módon is) valamint a Sheets.Visible paraméter állítgatásával (mondjuk True vagy False most elég nekünk) tudjuk elrejteni vagy megjeleníteni az adott munkalapot.

Így már azt is tudjuk, hogy ez pontosan mit fog csinálni:

For i = 1 To AllSheets
With Sheets(i)
.Visible = False
If .Name = currentperiod Then .Visible = True
End With
Next i

Első lépésként alapvetően az összes sheetet elrejtjük és csak ott jelenítjük meg, ahol a sheet neve teljesíteni az IF-ben megszabott feltételt.

642.jpgÉs ezzel már kész is vagyunk, úgy működik, mint a szél, ráadásul nem is terheltük meg az agyunkat így az év első napján.

643.jpg

A bejegyzés trackback címe:

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

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.