8.3 Objecten, methoden en eigenschappen

8.3.1. Inleidende oefening

Informatie over objecten, hun methoden en eigenschappen kan je op diverse manieren bekomen. Wij gaan om te beginnen als volgt tewerk:

Open een lege werkmap in Excel. Plaats in de cel A1 van Blad1 de datum. Activeer de Visual Basic-editor.

In het 'venster Direct' kan je opdrachten uitvoeren zonder ze in een macro op te nemen. Kies Beeld, Venster Direct of druk CTRL+G en typ de vetgedrukte regels uit de tekst hiernaast gvolgd door ENTER. De niet vetgedrukte tekst is het resultaat van de opdracht.

Het vraagteken aan het begin van de vetgedrukte regels staat voor 'Druk af in het 'Venster Direct '.

a) ?Application.Name
Microsoft Excel
b) ?Application.Workbooks(1).Name
Map1
c) ?Application.Workbooks(1).Worksheets(1).Name
Blad1
d) ?Application.Workbooks(1).Worksheets(1).Range("A1").Value
98-11-04
e) ?Application.Activewindow.Caption
Map1
f) Workbooks(1).Worksheets(1).Name="Overzicht"
g) ?Worksheets(1).Name
Overzicht
h) Range("A1").Clear
i) Range("A1").Value=#98-06-29#

Verklaring:

  1. Application is de naam van een eigenschap. Hier is deze gebruikt zonder objectaanduiding. Deze verwijst naar Microsoft Excel zelf. Van dit object wordt dan de waarde van de eigenschap 'Name' gevraagd.
  2. Van het object Application wordt de waarde van de eigenschap 'Workbooks' gevraagd. Dit levert de verzameling geopende werkmappen op. Hiervan wordt meerbepaald de eerste aangwezen door de index 1. Hiervan wordt vervolgens de waarde van de eigenschap 'Name' afgedrukt.
  3. Gaat één stap verder dan b): de eigenschap 'Worksheets' van Map1 levert de verzameling van alle bladen uit Map1 op. Hiervan wordt het eerste aangeduid waarvan dan de naam wordt afgedrukt.
  4. Gaat één stap verder dan c): de eigenschap 'Range' van een werkblad levert een object op van het type 'Range', hier de cel A1. Hiervan wordt de waarde van de eigenschap 'Value' afgedrukt.
  5. Het object Application heeft o.a. de eigenschap 'Activewindow'. Deze levert een Window-object als resultaat nl. het actieve venster. Dit object heeft de eigenschap 'Caption' . Dit levert de tekst in de titelbalk van het venster op.
  6. Deze opdracht leert dat je de aanduiding 'Application' mag weglaten in de opbouw van een instructie. Verder wordt aan de eigenschap 'Name' van Blad1 de waarde 'Overzicht' toegewezen.
  7. Deze opdracht leert dat je de aanduidingen 'Application' en 'Workbooks' mag weglaten in de opbouw van een instructie indien je naar de actieve werkmap verwijst. 'Application' en 'Workbooks' zijn eigenschappen die behoren tot de zgn. 'globals'. Deze kunnen gebruikt worden zonder objectaanduiding (zie verder bij objectenoverzicht).
  8. 'Clear' is een methode die toegepast kan worden op een object van het type 'Range'. Dit levert géén ander object op. Er wordt wel een actie uitgevoerd met het aangeduide object. Je maakt hier dus vanuit het 'venster Direct' de cel A1 in Blad1 leeg.
  9. De eigenschap 'Value' van de cel A1 krijgt de waarde 98-06-29 toegewezen.

8.3.2 Help via F1

Plaats de cursor in het venster 'Direct' op het woord 'Range' en druk F1. Het resultaat is:

Klik op 'Range'.

Je ziet bij elke eigenschap en methode welke objecten deze eigenschap of methode bezitten via 'Van toepassing op'.

Klik nu op 'Range-object'.

Hier zie je duidelijk dat een object van het type 'Range' -zoals elk object trouwens- methoden en eigenschappen heeft. Klik op Eigenschappen, daarna op Methoden:

Een object van het type 'Range' heeft tientallen eigenschappen. Je vindt ze hier alfabetisch. Een object van het type 'Range' kent tientallen methoden. Je vindt ze hier alfabetisch.

8.3.3 Indeling van methoden en eigenschappen

Er zijn twee soorten methoden en eigenschappen:

  1. methoden en eigenschappen die naar objecten verwijzen. Het effect of resultaat van deze methoden en eigenschappen is dus een (ander) object!

  2. methoden die een actie/bewerking uitvoeren op het object en eigenschappen die een waarde toekennen aan een kenmerk van het object of waarvan je de huidige waarde kan opvragen. Men spreekt van 'actiewoorden'.

 

 

Syntax

Voorbeelden

A Eigenschappen die naar objecten verwijzen:
object.eigenschap
Worksheets(1).Range("B1:D5")Range("B1:D5").Font
ActiveCell
B Methoden die naar objecten verwijzen:
object.methode
Range("a1").Find(2)
C Eigenschappen - actiewoorden
object.eigenschap [= waarde]
Worksheets(1).Range("B1:D5").Value [=True]
Range("a1").Font.ColorIndex [=3]
ActiveCell.Borders.Linestyle [= xlDouble]
D Methoden - actiewoorden
object.methode [argument(en)]
Worksheets(1).DeleteActiveSheet.Printpreview
range("a1:a3").Copy destination:=Range("E5")

 

Opmerkingen:
  • 'object' in bovenstaande syntax zal zelf een combinatie zijn van methoden en/of eigenschappen (een expressie) die naar een object verwijzen (A en B), bijvoorbeeld:

eigenschap.eigenschap.eigenschap...
eigenschap.eigenschap.methode...
eigenschap..methode.eigenschap...

  • de waarde van een eigenschap staat bij het toewijzen ervan achter een '=' terwijl de waarde van een actie-argument bij een methode achter ':=' staat.

Oefeningen:

Bij welke groep (A-D) uit bovenstaande tabel horen volgende termen? Zoek dit op door het woord in het 'venster Direct' te typen en F1 te drukken. Bij sommige woorden krijg je een venster als dit:

Kies hier Excel. Je vraagt namelijk uitleg over een onderdeel van de Excel-objectbibliotheek. Later leren we VBA-termen en formulieren kennen.

 

Application Protect Creator Borders
Name LineStyle Visible ColorIndex
Workbooks AutoFit PrintPreview Font
Sheets Clear Value Numberformat

 

8.3.4 Auto List Members

Welke methoden en eigenschappen bij een object horen zie je o.a. tijdens het typen van opdrachten in het modulevenster of in het 'Venster Direct' dankzij de 'Auto List Members'-faciliteit.

Activeer het venster Direct. Typ 'Application' gevolgd door een punt. Op dat ogenblik vershijnt een 'Auto List'. Dit is een lijst met alle eigenschappen en methoden ('leden') die bij het aangeduide object horen. Je hebt hier dus een andere manier om informatie over objecten te raadplegen. De eigenschappen en de methoden worden met een verschillend pictogram voorgesteld.
Selecteer nu de eigenschap 'Visible' en dubbelklik erop of druk Tab. Druk ENTER.

De eigenschap Application verwijst naar het Application-object.

8.3.5 Objectenoverzicht (object browser)

Een zo mogelijk nog krachtiger instrument om informatie over objecten te vinden is het objectenoverzicht dat geactiveerd wordt via de onderstaande knop in de VBA-omgeving:

  • selecteer linksboven de gewenste 'bibliotheek' in de keuzelijst. In ons geval is dat dus Excel.
  • je krijgt links onderaan een lijst met 'klassen'. Dit is een andere naam voor objecten.
  • selecteer het gewenste object en je krijgt rechts een lijst met bijhorende eigenschappen en methoden.
  • de eigenschappen en methoden hebben een eigen pictogram en staan alfabetisch. Eerst zie je de eigenschappen.
  • selecteer rechts de gewenste eigenschap of methode en klik op rechtsboven en je komt in het helpscherm.

 

8.3.6 Symbolische constanten

Plaats een dubbele rand rond A1 van Blad1. Typ in het 'venster Direct' de vetgedrukte tekst hieronder:

?range("a1").Borders.LineStyle

-4119

range("a1").Borders.LineStyle=xlSingle

?range("a1").Borders.LineStyle

-4115

De waarde van sommige eigenschappen van Excel-objecten (kleuren, randen,...) wordt door een getal voorgesteld. Het is moeilijk om veel van dergelijke waarden te onthouden. Daarom kan je deze waarden vervangen door zgn. symbolische constanten. Dit zijn woorden die Visual Basic herkent en vervangt door het gepaste getal. Zo'n symbolische constante begint met 'xl' (Excel) om het verschil aan te duiden met constanten die je zelf definieert (zie verder). xlDouble is dus synoniem van -4119, xlSingle van -4115.

Je vindt een lijst van de symbolische constanten in het helpscherm van de betreffende eigenschap.

Constanten die in Visual Basic gedefinieerd zijn beginnen met 'vb'.

Oefeningen:

  1. Neem een macro op waarin je voor een cel volgende eigenschappen instelt: datumopmaak in Bin-formaat, centreren, vet, tekstkleur rood, puntgrootte 12, dubbele blauwe rand en gele achtergrond.

  2. Welke waarden kan de eigenschap 'LineStyle' hebben?

  3. Welke objecten hebben de eigenschap 'LineStyle'?