Inhoudsopgave:
Video: Excel VBA: Referring to Ranges & Writing to Cells (Range, Cells, Offset, Names) 2024
Hoewel weten hoe te verwijzen naar objecten belangrijk is, kunt u geen nuttige Excel VBA-programmering doen door eenvoudigweg te verwijzen naar een object. Om iets zinvols te bereiken, moet u een van de twee dingen doen:
-
De eigenschappen van een object lezen of wijzigen.
-
Specificeer een methode van de actie die met een object moet worden gebruikt.
Met letterlijk duizenden eigenschappen en methoden beschikbaar, kunt u gemakkelijk overweldigd worden. Onthoud dat u nooit de meeste beschikbare eigenschappen en methoden hoeft te gebruiken.
Objecteigenschappen
Elk object heeft eigenschappen. U kunt eigenschappen beschouwen als attributen die het object beschrijven. De eigenschappen van een object bepalen hoe het object eruit ziet, hoe het zich gedraagt en zelfs of het zichtbaar is. Met VBA kunt u twee dingen doen met de eigenschappen van een object:
-
Onderzoek de huidige instelling voor een eigenschap.
-
Wijzig de instelling van de eigenschap.
Een object met één celbereik heeft bijvoorbeeld de eigenschap Waarde. De waarde-eigenschap slaat de waarde op die zich in de cel bevindt. U kunt VBA-code schrijven om de eigenschap Value weer te geven, of u kunt VBA-code schrijven om de eigenschap Value in te stellen op een specifieke waarde. De volgende macro gebruikt de ingebouwde MsgBox-functie van VBA om een vak weer te geven dat de waarde weergeeft in cel A1 op Blad1 van de actieve werkmap:
Sub ShowValue () Contents = Worksheets ("Sheet1"). Range (“A1”). Waarde MsgBox Inhoud Einde sub
MsgBox is trouwens een zeer nuttige functie. U kunt het gebruiken om resultaten weer te geven terwijl Excel uw VBA-code uitvoert.
De code in het vorige voorbeeld toont de huidige instelling van de waarde-eigenschap van een cel. Wat als u de instelling voor die eigenschap wilt wijzigen? De volgende macro wijzigt de waarde in cel A1 door de eigenschap Value van de cel te wijzigen:
Sub ChangeValue () werkbladen ("Sheet1"). Range (“A1”). Waarde = 994. 92 End Sub
Nadat Excel deze procedure heeft uitgevoerd, bevat cel A1 op Sheet1 van de actieve werkmap de waarde 994. 92. Als de actieve werkmap geen werkblad heeft met de naam Sheet1, is het resultaat van het uitvoeren van die macro een foutmelding VBA volgt gewoon de instructies en het kan niet werken met een blad dat niet bestaat.
Elk object heeft zijn eigen set eigenschappen, hoewel sommige eigenschappen hetzelfde zijn voor veel objecten. Veel (maar niet alle) objecten hebben bijvoorbeeld een eigenschap Zichtbaar. De meeste objecten hebben ook een eigenschap Name.
Sommige objecteigenschappen zijn alleen-lezeneigenschappen, wat betekent dat uw code de waarde van de eigenschap kan krijgen, maar deze niet kan wijzigen.
Een verzameling is ook een object. Dit betekent dat een verzameling ook eigenschappen heeft. U kunt bijvoorbeeld bepalen hoeveel werkmappen open zijn door naar de eigenschap Count van de werkmappencollectie te gaan. De volgende VBA-procedure geeft een bericht weer waarin staat hoeveel werkmappen open zijn:
Sub CountBooks () MsgBox-werkmappen. Count End Sub
Objectmethoden
Naast eigenschappen hebben objecten ook methoden. Een -methode is een actie die u uitvoert met een object. Een methode kan de eigenschappen van een object wijzigen of het object iets laten doen.
In dit eenvoudige voorbeeld wordt de methode ClearContents op een bereikobject gebruikt om de inhoud van 12 cellen op het actieve werkblad te wissen:
Sub ClearRange () Bereik ("A1: A12"). ClearContents End Sub
Sommige methoden nemen een of meer argumenten. Een -argument is een waarde die verder de uit te voeren actie aangeeft. U plaatst de argumenten voor een methode na de methode, gescheiden door een spatie. Meerdere argumenten worden gescheiden door een komma.
In het volgende voorbeeld wordt Blad1 (in de actieve werkmap) geactiveerd en vervolgens de inhoud van cel A1 naar cel B1 gekopieerd met behulp van de methode Kopiëren van het Range-object. In dit voorbeeld heeft de methode Copy één argument, wat het doelbereik is voor de kopieerbewerking:
Sub CopyOne () Worksheets ("Sheet1"). Activeer bereik ("A1"). Kopieerbereik ("B1") Einde sub
Merk op dat de werkbladverwijzing weggelaten was toen naar de Range-objecten werd verwezen. Dit kan veilig worden gedaan omdat een instructie om Blad1 te activeren werd gebruikt. (met behulp van de methode Activeren).
Een andere manier om een argument voor een methode op te geven, is om de officiële naam van het argument gevolgd door een dubbele punt en een gelijkteken te gebruiken. Het gebruik van benoemde argumenten is optioneel, maar als u dit doet, kan uw code vaak gemakkelijker te begrijpen zijn. De tweede instructie in de CopyOne-procedure kan als volgt worden geschreven:
Bereik ("A1"). Kopieerbestemming: = Bereik ("B1")
Let op de kleine prompt als het statement wordt getypt. Die prompt toont de officiële naam van het argument.
De VBE geeft een lijst met argumenten weer terwijl u typt.Omdat een verzameling ook een object is, hebben collecties methoden. De volgende macro gebruikt de methode Toevoegen voor de werkmappencollectie:
Sub AddAWorkbook () werkmappen. Eind toevoegen Sub
Zoals u mag verwachten, maakt deze instructie een nieuwe werkmap. Met andere woorden, het voegt een nieuwe werkmap toe aan de werkmappencollectie. Nadat u deze macro hebt uitgevoerd, is een nieuwe werkmap de actieve werkmap.
Objectgebeurtenissen
Er is nog een onderwerp dat u moet weten over: evenementen. Objecten reageren op verschillende gebeurtenissen die zich voordoen. Als u bijvoorbeeld in Excel werkt en een andere werkmap activeert, vindt er een gebeurtenis Werkmap activeren plaats. U kunt bijvoorbeeld een VBA-macro hebben die is ontworpen om uit te voeren wanneer een Activate-gebeurtenis plaatsvindt voor een bepaald werkboekobject.
Excel ondersteunt veel gebeurtenissen, maar niet alle objecten kunnen op alle gebeurtenissen reageren. En sommige objecten reageren niet op gebeurtenissen.De enige gebeurtenissen die u kunt gebruiken, zijn die die beschikbaar zijn gesteld door de programmeurs van Microsoft Excel.