Har du någonsin försökt förstå en obekant (och komplicerad) Excel-arbetsbok? Det skulle vara bra att se en karta som ger en översikt över vilka celler som innehåller konstanter och vilka celler som innehåller värden.
Du kan skapa ett VBA-verktyg som genererar en karta över det aktiva kalkylbladet. Kartan genereras på ett nytt kalkylblad och den består av färgkodade celler som låter dig snabbt identifiera värden, text och formler.
Nedan ser du ett exempel på en sådan karta. Celler som innehåller text är gröna, de som innehåller ett numeriskt värde är gula och celler som innehåller formler är röda. En sådan karta kan hjälpa dig att upptäcka potentiella fel. Till exempel, om en formel i ett formelblock har skrivits över av ett värde, kommer den cellen att sticka ut i kartvyn (som i cell Q11 i exemplet).

QuickMap VBA-koden
VBA-proceduren som genererar kalkylbladskartan listas nedan. Om du vill använda det här verktyget, kopiera bara koden och klistra in den i en VBA-modul. Aktivera sedan ett kalkylblad och kör QuickMap-subrutinen.
Sub QuickMap()
Dim FormulaCells Som Variant
Dim TextCells som variant
Dim antal celler som variant
Dim område som räckvidd
Om TypeName(ActiveSheet) <> "Worksheet" Avsluta Sub
' Skapa objektvariabler för cellundermängder
Vid fel Resume Next
Ange FormulaCells = Range(“A1”).SpecialCells _
(xlFormulas, xlNumbers + xlTextValues + xlLogical)
Ställ in TextCells = Range(“A1”).SpecialCells(xlConstants, xlTextValues)
Ange NumberCells = Range(“A1”).SpecialCells(xlConstants, xlNumbers)
Vid fel GoTo 0
' Lägg till ett nytt ark och formatera det
Ark.Lägg till
Med celler
.ColumnWidth = 2
.Teckensnittsstorlek = 8
.HorizontalAlignment = xlCenter
Sluta med
Application.ScreenUpdating = Falskt
' Gör formelcellerna
Om inte är tomt (formelceller) då
För varje område i FormulaCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "F"
.Interior.ColorIndex = 3
Sluta med
Nästa område
Avsluta om
' Gör textcellerna
Om inte är tomt (textceller) då
För varje område i TextCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "T"
.Interior.ColorIndex = 4
Sluta med
Nästa område
Avsluta om
' Gör de numeriska cellerna
Om inte är tomt (nummerceller) då
För varje område i NumberCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "N"
.Interior.ColorIndex = 6
Sluta med
Nästa område
Avsluta om
Avsluta Sub
Hur det fungerar
Proceduren kontrollerar först att det aktiva bladet är ett kalkylblad. Om det inte är det, finns det en snabb utgång utan ytterligare åtgärd. När det aktiva bladet är ett kalkylblad, skapar proceduren tre objektvariabler genom att använda SpecialCells-metoden för att identifiera de olika celltyperna. SpecialCells-metoden är mycket användbar. Om du inte är bekant med det, kolla in det i Excels onlinehjälpfil. Lägg märke till användningen av On Error Resume Next. Detta för att undvika felet som uppstår om inga celler uppfyller kraven - till exempel om kalkylbladet inte har några formler.
Därefter lägger proceduren till ett nytt kalkylblad, minskar cellbredden och ställer in den horisontella justeringen till mitten. Detta steg är kosmetiskt. Suben stänger sedan av skärmuppdateringen för att påskynda saker och ting lite.
De nästa tre blocken av kod bearbetar cellerna. Om inga celler kvalificerar sig är objektvariabeln Empty, så underdelen testar för detta. Sedan går rutinen genom varje område i Range-objektet och formaterar cellen. Du kan enkelt anpassa den här delen av subrutinen för att tillämpa olika formatering.
Kolla in Power Utility Pak-tillägget för en mycket mer sofistikerad version av det här verktyget.