Selvom det er vigtigt at vide, hvordan man refererer til objekter, kan du ikke lave nogen nyttig Excel VBA-programmering ved blot at henvise til et objekt. For at opnå noget meningsfuldt skal du gøre en af to ting:
-
Læs eller rediger et objekts egenskaber.
-
Angiv en fremgangsmåde af foranstaltninger, der skal anvendes med et objekt.
Med bogstaveligt talt tusindvis af egenskaber og metoder tilgængelige, kan du nemt blive overvældet. Bare husk, at du aldrig behøver at bruge de fleste af de tilgængelige egenskaber og metoder.
Objektegenskaber
Hvert objekt har egenskaber. Du kan tænke på egenskaber som attributter, der beskriver objektet. Et objekts egenskaber bestemmer, hvordan det ser ud, hvordan det opfører sig, og endda om det er synligt. Ved at bruge VBA kan du gøre to ting med et objekts egenskaber:
For eksempel har et enkeltcellet områdeobjekt en egenskab kaldet Værdi. Egenskaben Værdi gemmer værdien i cellen. Du kan skrive VBA-kode for at vise værdiegenskaben, eller du kan skrive VBA-kode for at indstille værdiegenskaben til en bestemt værdi. Følgende makro bruger den indbyggede VBA MsgBox-funktion til at vise en boks, der viser værdien i celle A1 på Ark1 i den aktive projektmappe:
Denne meddelelsesboks viser et områdeobjekts værdiegenskab.
Sub ShowValue()
Indhold = Arbejdsark(“Ark1”).Range(“A1”).Værdi
MsgBox Indhold
Slut Sub
MsgBox er i øvrigt en meget nyttig funktion. Du kan bruge det til at vise resultater, mens Excel udfører din VBA-kode.
Koden i det foregående eksempel viser den aktuelle indstilling af en celles Værdi-egenskab. Hvad hvis du vil ændre indstillingen for den pågældende ejendom? Følgende makro ændrer værdien i celle A1 ved at ændre cellens værdiegenskab:
Sub ChangeValue()
Arbejdsark(“Ark1”).Range(“A1”).Værdi = 994,92
Slut Sub
Når Excel har udført denne procedure, indeholder celle A1 på Ark1 i den aktive projektmappe værdien 994,92. Hvis den aktive projektmappe ikke har et ark med navnet Ark1, er resultatet af udførelse af denne makro en fejlmeddelelse. VBA følger bare instruktionerne, og det kan ikke fungere med et ark, der ikke eksisterer.
Hvert objekt har sit eget sæt egenskaber, selvom nogle egenskaber er fælles for mange objekter. For eksempel har mange (men ikke alle) objekter en Visible-egenskab. De fleste objekter har også en Name-egenskab.
Nogle objektegenskaber er skrivebeskyttede egenskaber, hvilket betyder, at din kode kan få egenskabens værdi, men den kan ikke ændre den.
En samling er også et objekt. Det betyder, at en samling også har egenskaber. Du kan f.eks. bestemme, hvor mange projektmapper, der er åbne, ved at få adgang til egenskaben Count for Workbooks-samlingen. Følgende VBA-procedure viser en meddelelsesboks, der fortæller dig, hvor mange projektmapper der er åbne:
Undertællebøger()
MsgBox Workbooks.Count
Slut Sub
Objekt metoder
Ud over egenskaber har objekter metoder. En metode er en handling, du udfører med et objekt. En metode kan ændre et objekts egenskaber eller få objektet til at gøre noget.
Dette simple eksempel bruger ClearContents-metoden på et Range-objekt til at slette indholdet af 12 celler på det aktive ark:
Sub ClearRange()
Range(“A1:A12”). Ryd indhold
Slut Sub
Nogle metoder tager et eller flere argumenter. Et argument er en værdi, der yderligere specificerer den handling, der skal udføres. Du placerer argumenterne for en metode efter metoden, adskilt af et mellemrum. Flere argumenter er adskilt af et komma.
Følgende eksempel aktiverer Ark1 (i den aktive projektmappe) og kopierer derefter indholdet af celle A1 til celle B1 ved at bruge Range-objektets Copy-metode. I dette eksempel har Copy-metoden ét argument, som er destinationsområdet for kopieringsoperationen:
Sub CopyOne()
Arbejdsark ("Ark1"). Aktiver
Range(“A1”). Kopiér område(“B1”)
Slut Sub
Bemærk, at regnearksreferencen blev udeladt, da der blev refereret til Range-objekterne. Dette kan gøres sikkert, fordi der blev brugt en erklæring til at aktivere Sheet1. (ved hjælp af aktiveringsmetoden).
En anden måde at angive et argument for en metode på er at bruge det officielle navn på argumentet efterfulgt af et kolon og et lighedstegn. Brug af navngivne argumenter er valgfrit, men det kan ofte gøre din kode lettere at forstå. Den anden erklæring i CopyOne-proceduren kunne skrives sådan:
Range(“A1”).Kopiér Destination:=Range(“B1”)
Læg mærke til den lille prompt, mens erklæringen bliver skrevet. Denne prompt viser det officielle navn på argumentet.
VBE viser en liste over argumenter, mens du skriver.
Fordi en samling også er et objekt, har samlinger metoder. Følgende makro bruger metoden Tilføj til samlingen af projektmapper:
Sub AddAWorkbook()
Arbejdsbøger.Tilføj
Slut Sub
Som du måske forventer, opretter denne erklæring en ny projektmappe. Med andre ord føjer den en ny projektmappe til samlingen af projektmapper. Når du har udført denne makro, vil en ny projektmappe være den aktive projektmappe.
Objekthændelser
Der er endnu et emne, du skal vide om: begivenheder. Objekter reagerer på forskellige hændelser, der opstår. For eksempel, når du arbejder i Excel, og du aktiverer en anden projektmappe, opstår der en Aktivering af projektmappe. Du kunne f.eks. have en VBA-makro, der er designet til at udføres, når en Activate-hændelse opstår for et bestemt projektmappeobjekt.
Excel understøtter mange hændelser, men ikke alle objekter kan reagere på alle hændelser. Og nogle objekter reagerer ikke på nogen begivenheder. De eneste hændelser, du kan bruge, er dem, der er stillet til rådighed af programmører af Microsoft Excel.