Skúšali ste niekedy porozumieť neznámemu (a komplikovanému) excelovému zošitu? Pomohlo by vidieť mapu, ktorá poskytuje prehľad o tom, ktoré bunky obsahujú konštanty a ktoré bunky obsahujú hodnoty.
Môžete vytvoriť pomôcku VBA, ktorá vygeneruje mapu aktívneho pracovného hárka. Mapa sa vygeneruje na novom pracovnom hárku a pozostáva z farebne označených buniek, ktoré vám umožňujú rýchlo identifikovať hodnoty, text a vzorce.
Nižšie vidíte príklad takejto mapy. Bunky, ktoré obsahujú text, sú zelené, bunky, ktoré obsahujú číselnú hodnotu, sú žlté a bunky, ktoré obsahujú vzorce, sú červené. Takáto mapa vám môže pomôcť odhaliť potenciálne chyby. Ak bol napríklad jeden vzorec v bloku vzorcov prepísaný hodnotou, táto bunka vynikne v zobrazení mapy (ako v bunke Q11 v príklade).
QuickMap VBA kód
Postup VBA, ktorý generuje mapu pracovného hárka, je uvedený nižšie. Ak chcete použiť tento nástroj, stačí skopírovať kód a prilepiť ho do modulu VBA. Potom aktivujte pracovný hárok a spustite podprogram QuickMap.
Sub QuickMap()
Dim FormulaCells ako variant
Dim TextCells ako variant
Dim NumberCells ako variant
Dim Area As Range
Ak TypeName(ActiveSheet) <> “Worksheet” Potom Exit Sub
' Vytvorte premenné objektu pre podmnožiny buniek
Pri chybe Pokračujte ďalej
Nastaviť vzorecCells = Range(“A1”).SpecialCells _
(xlFormulas, xlNumbers + xlTextValues + xlLogical)
Set TextCells = Range(“A1”).SpecialCells(xlConstants, xlTextValues)
Set NumberCells = Range(“A1”).ŠpeciálneCells(xlConstants, xlNumbers)
Pri chybe Prejsť na 0
' Pridajte nový hárok a naformátujte ho
Sheets.Add
S bunkami
.ColumnWidth = 2
.Veľkosť písma = 8
.HorizontalAlignment = xlCenter
Koniec s
Application.ScreenUpdating = False
' Urobte bunky vzorca
If Not IsEmpty (FormulaCells) Then
Pre každú oblasť vo FormulaCells.Areas
S ActiveSheet.Range(Area.Address)
.Value = „F“
.Interior.ColorIndex = 3
Koniec s
Ďalšia oblasť
Koniec Ak
' Urobte textové bunky
If Not IsEmpty (TextCells) Then
Pre každú oblasť v TextCells.Areas
S ActiveSheet.Range(Area.Address)
.Hodnota = „T“
.Interior.ColorIndex = 4
Koniec s
Ďalšia oblasť
Koniec Ak
' Urobte číselné bunky
If Not IsEmpty (NumberCells) Then
Pre každú oblasť v počteCells.Areas
S ActiveSheet.Range(Area.Address)
.Value = „N“
.Interior.ColorIndex = 6
Koniec s
Ďalšia oblasť
Koniec Ak
End Sub
Ako to funguje
Postup najprv skontroluje, či aktívny hárok je pracovný hárok. Ak nie, je tu rýchly odchod bez ďalšej akcie. Keď je aktívnym hárkom pracovný hárok, procedúra vytvorí tri objektové premenné pomocou metódy SpecialCells na identifikáciu rôznych typov buniek. Veľmi užitočná je metóda SpecialCells. Ak s ním nie ste oboznámení, pozrite si ho v súbore online pomocníka programu Excel. Všimnite si použitie možnosti On Error Resume Next. Je to preto, aby sa predišlo chybe, ktorá nastane, ak sa nekvalifikujú žiadne bunky – napríklad ak hárok nemá žiadne vzorce.
Ďalej postup pridá nový pracovný hárok, zmenší šírku bunky a nastaví vodorovné zarovnanie na stred. Tento krok je kozmetický. Sub potom vypne aktualizáciu obrazovky, aby sa veci trochu urýchlili.
Ďalšie tri bloky kódu spracovávajú bunky. Ak sa nekvalifikujú žiadne bunky, objektová premenná je prázdna, takže sa to podrobí podriadeným testom. Potom rutina prechádza každou oblasťou v objekte Range a naformátuje bunku. Túto časť podprogramu môžete jednoducho prispôsobiť, aby ste použili iné formátovanie.
Pozrite si doplnok Power Utility Pak pre oveľa sofistikovanejšiu verziu tohto nástroja.