Zkoušeli jste někdy porozumět neznámému (a komplikovanému) sešitu Excelu? Bylo by užitečné vidět mapu, která poskytuje přehled o tom, které buňky obsahují konstanty a které buňky obsahují hodnoty.
Můžete vytvořit nástroj VBA, který vygeneruje mapu aktivního listu. Mapa se generuje na novém listu a skládá se z barevně odlišených buněk, které umožňují rychle identifikovat hodnoty, text a vzorce.
Níže vidíte příklad takové mapy. Buňky obsahující text jsou zelené, buňky obsahující číselnou hodnotu jsou žluté a buňky obsahující vzorce jsou červené. Taková mapa vám může pomoci odhalit potenciální chyby. Pokud byl například jeden vzorec v bloku vzorců přepsán hodnotou, tato buňka vynikne v zobrazení mapy (jako v buňce Q11 v příkladu).
QuickMap VBA kód
Postup VBA, který generuje mapu listu, je uveden níže. Pokud byste chtěli použít tento nástroj, stačí zkopírovat kód a vložit jej do modulu VBA. Poté aktivujte list a spusťte podprogram QuickMap.
Dílčí rychlá mapa()
Dim FormulaCells jako varianta
Ztlumit TextCells jako variantu
Dim NumberCells jako varianta
Dim Area As Range
Pokud TypeName(ActiveSheet) <> “Worksheet” Pak Exit Sub
' Vytvořte proměnné objektu pro podmnožiny buněk
Při chybě pokračovat dále
Set FormulaCells = Range(“A1”).SpecialCells _
(xlFormulas, xlNumbers + xlTextValues + xlLogical)
Set TextCells = Range(“A1”).SpecialCells(xlConstants, xlTextValues)
Set NumberCells = Range(“A1”).SpecialCells(xlConstants, xlNumbers)
Při chybě GoTo 0
' Přidejte nový list a naformátujte jej
Sheets.Add
S buňkami
.ColumnWidth = 2
.Velikost písma = 8
.HorizontalAlignment = xlCenter
Konec s
Application.ScreenUpdating = False
' Udělejte buňky vzorce
If Not IsEmpty(FormulaCells) Then
Pro každou oblast ve FormulaCells.Areas
S ActiveSheet.Range(Area.Address)
.Value = „F“
.Interior.ColorIndex = 3
Konec s
Další oblast
End If
' Proveďte textové buňky
If Not IsEmpty(TextCells) Then
Pro každou oblast v TextCells.Areas
S ActiveSheet.Range(Area.Address)
.Value = „T“
.Interior.ColorIndex = 4
Konec s
Další oblast
End If
' Udělejte číselné buňky
If Not IsEmpty(NumberCells) Then
Pro každou oblast v NumberCells.Areas
S ActiveSheet.Range(Area.Address)
.Value = „N“
.Interior.ColorIndex = 6
Konec s
Další oblast
End If
End Sub
Jak to funguje
Postup nejprve zkontroluje, zda aktivní list je list. Pokud tomu tak není, dojde k rychlému odchodu bez další akce. Když je aktivní list list, procedura vytvoří tři objektové proměnné pomocí metody SpecialCells k identifikaci různých typů buněk. Velmi užitečná je metoda SpecialCells. Pokud s ním nejste obeznámeni, podívejte se na něj v souboru online nápovědy aplikace Excel. Všimněte si použití možnosti On Error Resume Next. Je to proto, aby se předešlo chybě, která nastane, pokud se nekvalifikují žádné buňky – například pokud list nemá žádné vzorce.
Dále postup přidá nový list, zmenší šířku buňky a nastaví vodorovné zarovnání na střed. Tento krok je kosmetický. Sub pak vypne aktualizaci obrazovky, aby se věci trochu urychlily.
Další tři bloky kódu zpracují buňky. Pokud se nekvalifikují žádné buňky, je objektová proměnná Prázdná, takže na to dílčí testy. Potom rutina prochází každou oblastí v objektu Range a zformátuje buňku. Tuto část podprogramu můžete snadno přizpůsobit a použít jiné formátování.
Podívejte se na doplněk Power Utility Pak pro mnohem sofistikovanější verzi tohoto nástroje.