Forståelse av Excel-Objektmodellen
Sveip for å vise menyen
Hver eneste linje med VBA du noen gang vil skrive i Excel, er en setning om objekter: noe eksisterer (en Application, en Workbook, et Worksheet, et Range), og du enten leser en av dens egenskaper eller ber den kjøre en av dens metoder. Når denne hierarkiforståelsen sitter, er resten av språket stort sett vokabular.
Lese hierarkiet
- Application — hele den kjørende kopien av Excel; toppen av hvert hierarki;
- Workbooks — samlingen av alle åpne filer; én enkelt er en Workbook, f.eks.
Section_1_VBA_Intro.xlsm; - Worksheets — samlingen av faner inne i en arbeidsbok; én enkelt er et Worksheet, f.eks. "Employees";
- Range — én celle, en blokk med celler, en hel rad eller en hel kolonne;
- Cells / Value — de faktiske dataene som ligger inne i et Range.
Du trenger sjelden å skrive hele kjeden fra Application og nedover — VBA antar at du mener den aktive arbeidsboken og det aktive arket med mindre du sier noe annet — men å navngi objekter eksplisitt er det som skiller skjør kode fra pålitelig kode. Sammenlign disse to måtene å skrive samme instruksjon 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 andre versjonen vil fortsette å fungere selv om brukeren har tre andre arbeidsbøker åpne og et annet ark valgt — en vane som er svært viktig når makroene dine blir lengre enn noen få linjer. Du vil bruke ThisWorkbook.Worksheets("SheetName") på denne måten gjennom hele kurset.
Navigering i objektrelasjoner i Immediate-vinduet
Immediate-vinduet (Vis → Immediate-vindu eller Ctrl+G i VBE; ^ ⌘ G på Mac) lar deg teste én enkelt kodelinje uten å pakke den inn i en Sub.


Skriv en linje som starter med et spørsmålstegn og trykk Enter for å se resultatet umiddelbart. 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 linjen introduserer CurrentRegion, en egenskap som utvider seg fra én enkelt celle til hele det sammenhengende datablokket rundt den.
Oppgave
- I Umiddelbar-vinduet, skriv én linje som skriver ut stillingen til
Olivia Brown(rad 4) uten å klikke på cellen først — referer den direkte gjennom objekthierarkiet. - Skriv en andre linje som skriver ut hvor mange rader det er i Employees-tabellen ved å bruke
CurrentRegion.Rows.Count.
Referer til den som ThisWorkbook.Worksheets("Employees").Range("D4").Value — rad 4 er Olivia Brown, kolonne D er Stilling.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Forståelse av Excel-Objektmodellen
Hver eneste linje med VBA du noen gang vil skrive i Excel, er en setning om objekter: noe eksisterer (en Application, en Workbook, et Worksheet, et Range), og du enten leser en av dens egenskaper eller ber den kjøre en av dens metoder. Når denne hierarkiforståelsen sitter, er resten av språket stort sett vokabular.
Lese hierarkiet
- Application — hele den kjørende kopien av Excel; toppen av hvert hierarki;
- Workbooks — samlingen av alle åpne filer; én enkelt er en Workbook, f.eks.
Section_1_VBA_Intro.xlsm; - Worksheets — samlingen av faner inne i en arbeidsbok; én enkelt er et Worksheet, f.eks. "Employees";
- Range — én celle, en blokk med celler, en hel rad eller en hel kolonne;
- Cells / Value — de faktiske dataene som ligger inne i et Range.
Du trenger sjelden å skrive hele kjeden fra Application og nedover — VBA antar at du mener den aktive arbeidsboken og det aktive arket med mindre du sier noe annet — men å navngi objekter eksplisitt er det som skiller skjør kode fra pålitelig kode. Sammenlign disse to måtene å skrive samme instruksjon 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 andre versjonen vil fortsette å fungere selv om brukeren har tre andre arbeidsbøker åpne og et annet ark valgt — en vane som er svært viktig når makroene dine blir lengre enn noen få linjer. Du vil bruke ThisWorkbook.Worksheets("SheetName") på denne måten gjennom hele kurset.
Navigering i objektrelasjoner i Immediate-vinduet
Immediate-vinduet (Vis → Immediate-vindu eller Ctrl+G i VBE; ^ ⌘ G på Mac) lar deg teste én enkelt kodelinje uten å pakke den inn i en Sub.


Skriv en linje som starter med et spørsmålstegn og trykk Enter for å se resultatet umiddelbart. 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 linjen introduserer CurrentRegion, en egenskap som utvider seg fra én enkelt celle til hele det sammenhengende datablokket rundt den.
Oppgave
- I Umiddelbar-vinduet, skriv én linje som skriver ut stillingen til
Olivia Brown(rad 4) uten å klikke på cellen først — referer den direkte gjennom objekthierarkiet. - Skriv en andre linje som skriver ut hvor mange rader det er i Employees-tabellen ved å bruke
CurrentRegion.Rows.Count.
Referer til den som ThisWorkbook.Worksheets("Employees").Range("D4").Value — rad 4 er Olivia Brown, kolonne D er Stilling.
Takk for tilbakemeldingene dine!