Indholdsfortegnelse:
Video: Excel VBA - Dit første VBA program 01 2024
Har du nogensinde forsøgt at fornemme 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 indeholder værdier.
Du kan oprette et VBA-værktøj, der genererer et kort over det aktive regneark. Kortet genereres på et nyt regneark, og består af farvekodede celler, der giver dig mulighed for hurtigt at identificere værdier, tekst og formler.
Nedenfor ses et eksempel på et sådant kort. Celler, der indeholder tekst, er grønne, de indeholder en numerisk værdi er gule, og celler, der indeholder formler, er røde. Et sådant kort kan hjælpe dig med at finde potentielle fejl. Hvis f.eks. En formel i en blok af formler er 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 regnearkets kort, er angivet nedenfor. Hvis du vil bruge dette værktøj, skal du blot kopiere koden og indsætte den i et VBA-modul. Aktivér derefter et regneark og udfør QuickMap-subrutinen.
Sub QuickMap () Dim FormulaCells Som Variant Dim NumberCells Som Variant Dim NumberCells Som Variant Dim Area Som Range Hvis TypeName (ActiveSheet) "Worksheet" Derefter Exit Sub 'Opret objektvariabler for celle-subsets På Error Resume Next Set FormulaCells = Range ”A1”). SpecialCells _ (xlFormulas, xlNumbers + xlTextValues + xlLogical) Indstil TextCells = Range ("A1"). SpecialCells (xlConstants, xlTextValues) Set NumberCells = Range ("A1"). SpecialCells (xlConstants, xlNumbers) På Fejl GoTo 0 'Tilføj et nyt ark og format det Ark. Tilføj med celler. ColumnWidth = 2. Font. Størrelse = 8. HorizontalAlignment = xlCenter slut med applikation. ScreenUpdating = False 'Gør formelcellerne, hvis ikke IsEmpty (FormulaCells) derefter for hvert område i FormulaCells. Områder med ActiveSheet. Område (Område. Adresse). Værdi = "F". Interiør. ColorIndex = 3 Slut med næste område slut Hvis 'Gør tekstcellerne, hvis ikke IsEmpty (TextCells) derefter for hvert område i TextCells. Områder med ActiveSheet. Område (Område. Adresse). Værdi = "T". Interiør. ColorIndex = 4 Slut med næste område slut Hvis 'Gør de numeriske celler, hvis ikke IsEmpty (NumberCells), derefter for hvert område i NumberCells. Områder med ActiveSheet. Område (Område. Adresse). Værdi = "N". Interiør. ColorIndex = 6 slutter med næste område slutning hvis endedel
Sådan virker det
Proceduren kontrollerer først for at sikre, at det aktive ark er et regneark. Hvis det ikke er tilfældet, 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, skal du tjekke 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 - for eksempel hvis regnearket ikke har nogen formler.
Dernæst tilføjer proceduren et nyt regneark, reducerer cellebredden og indstiller den vandrette justering til midten. Dette trin er kosmetisk. Underen slukker derefter skærmopdatering for at fremskynde tingene lidt.
De næste tre blokke af kode behandler cellerne. Hvis ingen celler kvalificerer, er objektvariablen tom, så deltestene for dette. Derefter løber rutinen gennem hvert område i Range-objektet og formaterer cellen. Du kan nemt tilpasse denne del af underrutinen til at anvende anden formatering.
Tjek Power add-on-add-in til en langt mere sofistikeret version af dette værktøj.