Förståelse av Excels Objektmodell
Svep för att visa menyn
Varje rad VBA-kod du någonsin skriver i Excel är en mening om objekt: något existerar (en Application, en Workbook, en Worksheet, en Range), och du läser antingen en av dess egenskaper eller ber den att köra en av dess metoder. När denna hierarki blir tydlig handlar resten av språket mest om ordförråd.
Läsa hierarkin
- Application — hela den körande kopian av Excel; toppen av varje hierarki;
- Workbooks — samlingen av alla öppna filer; en enskild är en Workbook, t.ex.
Section_1_VBA_Intro.xlsm; - Worksheets — samlingen av flikar i en arbetsbok; en enskild är en Worksheet, t.ex. "Employees";
- Range — en cell, ett block av celler, en hel rad eller en hel kolumn;
- Cells / Value — själva datan som finns i en Range.
Du behöver sällan skriva hela kedjan från Application och nedåt — VBA antar att du menar den aktiva arbetsboken och det aktiva bladet om du inte anger något annat — men att namnge objekt explicit är det som skiljer ömtålig kod från pålitlig kod. Jämför dessa två sätt att skriva samma instruktion:
' 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 andra versionen fortsätter att fungera även om användaren har tre andra arbetsböcker öppna och ett annat blad valt — en vana som är mycket viktig när dina makron blir längre än några rader. Du kommer att använda ThisWorkbook.Worksheets("SheetName") på detta sätt kontinuerligt under resten av kursen.
Navigera mellan objektrelationer i Immediate-fönstret
Immediate-fönstret (Visa → Immediate-fönster eller Ctrl+G i VBE; ^ ⌘ G på Mac) låter dig testa en enskild kodrad utan att behöva kapsla in den i en Sub.


Skriv en rad som börjar med ett frågetecken och tryck på Enter för att omedelbart se resultatet. Prova dessa 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 raden introducerar CurrentRegion, en egenskap som utvidgar sig från en enskild cell till hela det sammanhängande datablocket runt omkring.
Uppgift
- I Omedelbara fönstret, skriv en rad som skriver ut Position för
Olivia Brown(rad 4) utan att först klicka på cellen — referera direkt via objekthierarkin. - Skriv en andra rad som skriver ut hur många rader det finns i tabellen Employees med hjälp av
CurrentRegion.Rows.Count.
Referera till det som ThisWorkbook.Worksheets("Employees").Range("D4").Value — rad 4 är Olivia Brown, kolumn D är Position.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal