Även om det är viktigt att veta hur man refererar till objekt, kan du inte göra någon användbar Excel VBA-programmering genom att bara hänvisa till ett objekt. För att åstadkomma något meningsfullt måste du göra en av två saker:
Med bokstavligen tusentals egenskaper och metoder tillgängliga kan du lätt bli överväldigad. Kom bara ihåg att du aldrig behöver använda de flesta av de tillgängliga egenskaperna och metoderna.
Objektegenskaper
Varje objekt har egenskaper. Du kan tänka på egenskaper som attribut som beskriver objektet. Ett objekts egenskaper avgör hur det ser ut, hur det beter sig och till och med om det är synligt. Med VBA kan du göra två saker med ett objekts egenskaper:
Till exempel har ett encelligt Range-objekt en egenskap som heter Value. Egenskapen Value lagrar värdet i cellen. Du kan skriva VBA-kod för att visa egenskapen Value, eller så kan du skriva VBA-kod för att ställa in Value-egenskapen till ett specifikt värde. Följande makro använder den inbyggda VBA-funktionen MsgBox för att få fram en ruta som visar värdet i cell A1 på Sheet1 i den aktiva arbetsboken:
Den här meddelanderutan visar ett Range-objekts Value-egenskap.
Sub ShowValue()
Innehåll = Arbetsblad(“Sheet1”).Omfång(“A1”).Värde
MsgBox innehåll
Avsluta Sub
MsgBox är förresten en mycket användbar funktion. Du kan använda den för att visa resultat medan Excel kör din VBA-kod.
Koden i föregående exempel visar den aktuella inställningen för en cells värde-egenskap. Vad händer om du vill ändra inställningen för den egenskapen? Följande makro ändrar värdet i cell A1 genom att ändra cellens värde-egenskap:
Sub ChangeValue()
Arbetsblad(“Sheet1”).Omfång(“A1”).Värde = 994,92
Avsluta Sub
Efter att Excel har kört den här proceduren innehåller cell A1 på Blad1 i den aktiva arbetsboken värdet 994,92. Om den aktiva arbetsboken inte har ett ark med namnet Sheet1, är resultatet av att köra det makrot ett felmeddelande. VBA följer bara instruktionerna och det kan inte fungera med ett ark som inte finns.
Varje objekt har sin egen uppsättning egenskaper, även om vissa egenskaper är gemensamma för många objekt. Till exempel har många (men inte alla) objekt en Visible-egenskap. De flesta objekt har också en Name-egenskap.
Vissa objektegenskaper är skrivskyddade egenskaper, vilket innebär att din kod kan få egenskapens värde, men den kan inte ändra det.
En samling är också ett föremål. Det betyder att en samling också har egenskaper. Du kan till exempel bestämma hur många arbetsböcker som är öppna genom att gå till egenskapen Räkna i samlingen Arbetsböcker. Följande VBA-procedur visar en meddelanderuta som talar om hur många arbetsböcker som är öppna:
Sub CountBooks()
MsgBox Workbooks.Count
Avsluta Sub
Objektmetoder
Förutom egenskaper har objekt metoder. En metod är en handling du utför med ett objekt. En metod kan ändra ett objekts egenskaper eller få objektet att göra något.
Detta enkla exempel använder metoden ClearContents på ett Range-objekt för att radera innehållet i 12 celler på det aktiva arket:
Sub ClearRange()
Range(“A1:A12”). Rensa innehåll
Avsluta Sub
Vissa metoder tar ett eller flera argument. Ett argument är ett värde som ytterligare specificerar åtgärden som ska utföras. Du placerar argumenten för en metod efter metoden, åtskilda av ett mellanslag. Flera argument separeras med kommatecken.
Följande exempel aktiverar Sheet1 (i den aktiva arbetsboken) och kopierar sedan innehållet i cell A1 till cell B1 med hjälp av Range-objektets Copy-metod. I det här exemplet har kopieringsmetoden ett argument, vilket är destinationsintervallet för kopieringsoperationen:
Sub CopyOne()
Arbetsblad(“Sheet1”). Aktivera
Range(“A1”). Kopiera intervall(“B1”)
Avsluta Sub
Observera att kalkylbladsreferensen uteslöts när Range-objekten refererades. Detta kan göras säkert eftersom ett uttalande för att aktivera Sheet1 användes. (med hjälp av Aktivera-metoden).
Ett annat sätt att ange ett argument för en metod är att använda det officiella namnet på argumentet följt av ett kolon och ett likhetstecken. Att använda namngivna argument är valfritt, men att göra det kan ofta göra din kod lättare att förstå. Det andra påståendet i CopyOne-proceduren skulle kunna skrivas så här:
Range(“A1”).Kopiera Destination:=Range(“B1”)
Lägg märke till den lilla uppmaningen när uttalandet skrivs. Den uppmaningen visar det officiella namnet på argumentet.
VBE visar en lista med argument medan du skriver.
Eftersom en samling också är ett objekt har samlingar metoder. Följande makro använder Add-metoden för Workbooks-samlingen:
Sub AddAWorkbook()
Arbetsböcker. Lägg till
Avsluta Sub
Som du kan förvänta dig skapar detta uttalande en ny arbetsbok. Med andra ord läggs en ny arbetsbok till i Workbooks-samlingen. När du har kört detta makro kommer en ny arbetsbok att vara den aktiva arbetsboken.
Objekthändelser
Det finns ytterligare ett ämne som du behöver veta om: evenemang. Objekt reagerar på olika händelser som inträffar. Till exempel, när du arbetar i Excel och du aktiverar en annan arbetsbok, inträffar en Workbook Activate-händelse. Du kan till exempel ha ett VBA-makro som är utformat för att köras när en Activate-händelse inträffar för ett visst Workbook-objekt.
Excel stöder många händelser, men alla objekt kan inte svara på alla händelser. Och vissa objekt reagerar inte på några händelser. De enda händelser du kan använda är de som gjorts tillgängliga av programmerarna för Microsoft Excel.