Har du nogensinde prøvet at forstå en ukendt (og kompliceret) Excel-projektmappe? Det ville være nyttigt at se et kort, der giver et overblik over, hvilke celler der indeholder konstanter, og hvilke celler der indeholder værdier.
Du kan oprette et VBA-værktøj, der genererer et kort over det aktive regneark. Kortet er genereret på et nyt regneark, og det består af farvekodede celler, der lader dig hurtigt identificere værdier, tekst og formler.
Nedenfor ser du et eksempel på et sådant kort. Celler, der indeholder tekst, er grønne, dem, der indeholder en numerisk værdi, er gule, og celler, der indeholder formler, er røde. Sådan et kort kan hjælpe dig med at opdage potentielle fejl. Hvis f.eks. én formel i en blok af formler er blevet overskrevet af en værdi, vil den celle skille sig ud i kortvisningen (som i celle Q11 i eksemplet).
QuickMap VBA-koden
VBA-proceduren, der genererer arbejdsarkkortet, er angivet nedenfor. Hvis du gerne vil bruge dette værktøj, skal du bare kopiere koden og indsætte den i et VBA-modul. Aktiver derefter et regneark og udfør QuickMap-underrutinen.
Sub QuickMap()
Dim FormulaCells som variant
Dim tekstceller som variant
Dim NumberCells som variant
Dim område som rækkevidde
Hvis TypeName(ActiveSheet) <> "Worksheet" Afslut Sub
' Opret objektvariable for celleundersæt
Ved fejl Genoptag Næste
Indstil FormulaCells = Range(“A1”).SpecialCells _
(xlFormler, xlNumbers + xlTextValues + xlLogical)
Indstil TextCells = Range(“A1”).SpecialCells(xlConstants, xlTextValues)
Indstil NumberCells = Range(“A1”).SpecialCells(xlConstants, xlNumbers)
Ved fejl GoTo 0
Tilføj et nyt ark og formater det
Ark.Tilføj
Med celler
.ColumnWidth = 2
.Skriftstørrelse = 8
.Horizontal Alignment = xlCenter
Slut med
Application.ScreenUpdating = Falsk
' Lav formelcellerne
Hvis ikke er tomme (formelceller) så
For hvert område i FormulaCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "F"
.Interior.ColorIndex = 3
Slut med
Næste område
Afslut Hvis
' Lav tekstcellerne
Hvis ikke er tomme (tekstceller) så
For hvert område i TextCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "T"
.Interior.ColorIndex = 4
Slut med
Næste område
Afslut Hvis
' Lav de numeriske celler
Hvis ikke er tomme (talceller) så
For hvert område i NumberCells.Areas
Med ActiveSheet.Range(Area.Address)
.Value = "N"
.Interior.ColorIndex = 6
Slut med
Næste område
Afslut Hvis
Slut Sub
Hvordan det virker
Proceduren kontrollerer først, at det aktive ark er et regneark. Hvis den ikke er det, er der en hurtig exit uden yderligere handling. Når det aktive ark er et regneark, opretter proceduren tre objektvariabler ved at bruge SpecialCells-metoden til at identificere de forskellige celletyper. SpecialCells-metoden er meget nyttig. Hvis du ikke er bekendt med det, så tjek det ud i Excels online-hjælpefil. Bemærk brugen af On Error Resume Next. Dette er for at undgå den fejl, der opstår, hvis ingen celler kvalificerer sig - for eksempel hvis regnearket ikke har nogen formler.
Dernæst tilføjer proceduren et nyt regneark, reducerer cellebredden og indstiller den vandrette justering til centrum. Dette trin er kosmetisk. Sub'en slår derefter skærmopdatering fra for at fremskynde tingene en smule.
De næste tre blokke kode behandler cellerne. Hvis ingen celler kvalificerer sig, er objektvariablen Empty, så underdelen tester for dette. Derefter går rutinen gennem hvert område i områdeobjektet og formaterer cellen. Du kan nemt tilpasse denne del af underrutinen til at anvende forskellig formatering.
Tjek Power Utility Pak-tilføjelsen for en meget mere sofistikeret version af dette værktøj.