Forståelse af Excel-Objektmodellen
Stryg for at vise menuen
Hver eneste linje VBA, du nogensinde vil skrive i Excel, er en sætning om objekter: noget eksisterer (en Application, en Workbook, et Worksheet, et Range), og du læser enten en af dets egenskaber eller beder det om at køre en af dets metoder. Når denne hierarki-forståelse falder på plads, består resten af sproget for det meste af ordforråd.
Læsning af hierarkiet
- Application — hele den kørende kopi af Excel; toppen af ethvert hierarki;
- Workbooks — samlingen af alle åbne filer; en enkelt er en Workbook, f.eks.
Section_1_VBA_Intro.xlsm; - Worksheets — samlingen af faner i en workbook; en enkelt er et Worksheet, f.eks. "Employees";
- Range — én celle, et blok af celler, en hel række eller en hel kolonne;
- Cells / Value — de faktiske data, der befinder sig i et Range.
Du behøver sjældent at skrive hele kæden fra Application og ned — VBA antager, at du mener den aktive workbook og det aktive sheet, medmindre du angiver andet — men at navngive objekter eksplicit er det, der adskiller skrøbelig kode fra pålidelig kode. Sammenlign disse to måder at skrive den samme instruktion på:
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
Den anden version vil fortsætte med at fungere, selvom brugeren har tre andre projektmapper åbne og et andet ark valgt — en vane, der er yderst vigtig, når dine makroer bliver længere end et par linjer. Du vil bruge ThisWorkbook.Worksheets("SheetName") på denne måde løbende gennem resten af kurset.
Navigering i objektrelationer i Immediate-vinduet
Immediate-vinduet (Vis → Immediate-vindue eller Ctrl+G i VBE; ^ ⌘ G på Mac) giver dig mulighed for at teste en enkelt linje kode uden at skulle pakke den ind i en Sub.


Skriv en linje, der starter med et spørgsmålstegn, og tryk på Enter for straks at se resultatet. Prøv disse på Section_1_VBA_Intro.xlsm:
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
Den tredje linje introducerer CurrentRegion, en egenskab der udvider sig fra en enkelt celle til hele det sammenhængende datablok omkring den.
Opgave
- Skriv i Immediate Window én linje, der udskriver stillingen for
Olivia Brown(række 4) uden først at klikke på cellen — referér direkte gennem objekthierarkiet. - Skriv en anden linje, der udskriver, hvor mange rækker der er i Employees-tabellen ved hjælp af
CurrentRegion.Rows.Count.
Referér til den som ThisWorkbook.Worksheets("Employees").Range("D4").Value — række 4 er Olivia Brown, kolonne D er Position.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat