Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse av Excel-Objektmodellen | Introduksjon til VBA og Excel-objektmodellen
Excel VBA for Forretningsautomatisering

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.

carousel-imgcarousel-img

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

  1. 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.
  2. Skriv en andre linje som skriver ut hvor mange rader det er i Employees-tabellen ved å bruke CurrentRegion.Rows.Count.
Tips
expand arrow

Referer til den som ThisWorkbook.Worksheets("Employees").Range("D4").Value — rad 4 er Olivia Brown, kolonne D er Stilling.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

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.

carousel-imgcarousel-img

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

  1. 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.
  2. Skriv en andre linje som skriver ut hvor mange rader det er i Employees-tabellen ved å bruke CurrentRegion.Rows.Count.
Tips
expand arrow

Referer til den som ThisWorkbook.Worksheets("Employees").Range("D4").Value — rad 4 er Olivia Brown, kolonne D er Stilling.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4
some-alt