Ha nem vagy abban a szerencsés helyzetben, hogy a munkafüzeteidet csak te használod vagy több tucat helyről kapsz rendszeresen kitöltött fájlokat, akkor érhetnek meglepetések: többek közt fájlok átnevezése, munkalapok elrejtése/átnevezése – olykor a levédés ellenére is. Ezen bosszantó dolgok tükrében az üres munkalapok megléte szerencsére csekély mértékben zavaró.
Az egyik legnyilvánvalóbb oka ennek az Excel alapbeállítása, mely szerint új munkafüzet létrehozásánál rögtön három üres munkalap hozzáadása történik. Ezt a beállításoknál itt tudjuk módosítani (nálam ez a szám mindig 1-es):
Fájl – Beállítások – Általános – Felveendő lapok száma (Új munkafüzet létrehozása szekción belül):
Az aktív munkafüzet üres munkalapjai törlésre kerülnek ha a státuszuk látható (visible) vagy rejtett (hidden). Ha az üres munkalap státusza nagyon rejtett (very hidden): a lap nem törölhető, előbb láthatóra vagy rejtettre kell állítani, aztán lehet törölni. A makró átugorja a Diagram típusú lapokat (Chart sheet) és figyelembe veszi, hogy legalább egy látható munkalapot meg kell jelenítenie az Excelnek akkor is, ha az üres. Az adott munkafüzetbe szúrjunk be egy modult a Visual Basic szerkesztőjében és az alábbi kódot adjuk hozzá:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Sub UresMunkalapokTorlese() Dim Lap As Variant, Torolve As Integer 'Készítette: XLMotyo (https://xlmotyo.hu/) 'törli az aktív munkafüzet üres munkalapjait ha a státuszuk látható (visible) vagy rejtett (hidden). Ha az üres munkalap 'státusza nagyon rejtett (very hidden): a lap nem törölhetõ, elõbb láthatóra vagy rejtettre kell állítani. Application.ScreenUpdating = False On Error GoTo Vege_: For Each Lap In ActiveWorkbook.Sheets If TypeName(Lap) = "Worksheet" Then 'ha a lap típusa Munkalap If Application.WorksheetFunction.CountA(Lap.Cells) = 0 And ActiveWorkbook.Sheets.Count > 1 Then Application.DisplayAlerts = False Lap.Delete Application.DisplayAlerts = True Torolve = Torolve + 1 End If ElseIf TypeName(Lap) = "Chart" Then 'ha a lap típusa Diagram (Chart sheet) 'kód hozzáadása ha szükséges End If Next Lap Vege_: Application.ScreenUpdating = True If Torolve > 0 Then MsgBox Torolve & " üres munkalap lett törölve.", vbExclamation, "" Else MsgBox "Látható vagy rejtett státusszal:" & vbNewLine & "a munkafüzet nem tartalmaz üres munkalapot " & _ "vagy csak egyetlen üres munkalapot tartalmaz.", vbInformation, "" End If End Sub |
Készítettem egy videót a fenti makró magyarázatával:
Kód továbbfejlesztési ötletek:
– külön kezelni ha a munkalap látható (visible), rejtett (hidden) vagy nagyon rejtett (very hidden)
– ha a munkalap státusza nagyon rejtett (very hidden) és üres: tegye láthatóvá vagy rejtetté, majd törölje
– a törölt munkalapok nevét kilistázni a makró végén
– ne csak az aktív munkafüzetnél törölje a munkalapokat hanem pl. egy mappában lévő összes munkafüzetnél
Remélem hasznos volt a poszt.
Mintafájlért illetve kérdésekkel kapcsolatosan szólj hozzá lent vagy dobj egy emailt: xlmotyo@gmail.com