cmp-online.de
Startseite
Neu...
Yamaha XT600Z
Meine Tenere
XT-Technik
VB/VBA-Grundlagen
Grundelemente
Prozeduren
Operatoren
Variablen
Methoden
Schleifen
Vordefinierte Funktionen
Excel-Objekte
Impressum
private homepage von christian mario preussler
Objekte, Eigenschaften und Methoden

Objekte gehören zum Grundbestandteil einer modernen Programmiersprache. Auch VBA bedient sich der objektorientierten Programmierung.

Objekte

Objekte sind integraler Bestandteil moderner, visueller Programmiersprachen. Die Steuerung aller Eigenschaften und Zustände wird in den sog. objektorientierten Sprachen über Objekte geregelt. Objekte sind i.A. die grafisch sichtbaren, "faßbaren" Elemente eines Computerprogramms. Sie haben Attribute wie Namen, Textformatierungen und Größenwerte. Ebenso, wie es z.B. in Excel die Anwendung selbst, Arbeitsmappen, einzelne Tabellen oder Diagramme gibt, gibt es in der VBA-Entwicklungsumgebung von Excel ein Anwendungsobjekt (Application), Arbeitsmappen-Objekte (Workbooks), Tabellen- und Diagramm-Objekte. Die Objekte sind hierarchisch gegliedert; zu vielen Objektklassen existieren auch Unter-Klassen. Auch hier greift wieder die Analogie zum Anwendungsprogramm: Die Tabellen sind den Arbeitsmappen untergliedert, den Tabellen selbst gehören die Zellen an. Eine andere Art von Objekten sind die sog. Auflistungen. Sie sind zu erkennen an einem "s" am Ende des Namens. Die Auflistungen sind eine Art von Objektgruppen, aus deren Mitgliedern einzelne Objekte angesprochen werden können. Zum Beispiel gibt es in Excel eine Gruppe von Tabellenblättern (Sheets), jedes Einzelne Blatt ist Mitglied dieser Gruppe.

Eigenschaften

Zugriff auf Objekt-Attribute: Um auf ein Merkmal eines Objektes, wie zum Beispiel die Aufschrift auf einer Schaltfläche, die Größe eines Fensters oder dessen Farbe, Einfluß nehmen zu können, stehen die Eigenschaften zur Verfügung. Eigenschaften stellen sich dem Programmierer wie Variablen dar, denen die gewünschten Werte zugeordnet werden können. Sie werden in Form einer Zuweisung verwendet. Um die Eigenschaften eines Programmelementes einstellen zu können, muß im Programmcode das Objekt, das dieses Element repräsentiert, mitsamt seinen übergeordneten Objekten, getrennt durch einen Punkt, angegeben werden:

Objekt.Subobjekt.Eigenschaft = Zugewiesener_Wert

(Um klarer zwischen Objekten und den noch zu erläuternden Methoden und Eigenschaften unterscheiden zu können, wurde in den neueren VBA-Versionen die Trennung durch ein Ausrufezeichen (!) möglich gemacht:

Objekt!Subobjekt.Eigenschaft

Da diese Art der Trennung jedoch in der Literatur nur höchst selten anzutreffen ist, werde ich nicht weiter darauf eingehen, zumal häufig die Grenze zwischen Methoden und Objekten verwischt, und es somit eher zu Programmfehlern kommen kann, wenn versehentlich die falsche Variante gewählt wurde.)

Um zum Beispiel die Größe einer Schaltfläche (Command1) auf einem Formular (Form1) einzustellen, sind folgende Anweisungen möglich:

Forms.Form1.Controls.Command1.Height = 100
Forms.Form1.Controls.Command1.Width = 250

Viele Objekte, Methoden und Eigenschaften haben ein sog. default object, d.h., dieses muß nicht angegeben werden, wenn Einstellungen an den charakteristischen Merkmalen vorzunehmen sind. So ist im obigen Beispiel die Auflistung Forms das Default-Objekt des Formulars Form1, Command1 hat wiederum als Standard-Objekt die Controls-Auflistung. Somit kann man das Beispiel auch in folgender Form schreiben:

Form1.Command1.Width = 250

Wenn die Anweisung im Code-Bereich des Formulars Form1 ausgeführt werden soll (siehe Abschnitt 5.1, IDE), dann kann auch auf die Angabe des Formularnamens Form1 verzichtet werden:

Command1.Width = 250

(Die Einheit, in der hier die Breite und oben die Höhe bemaßt werden, wird in Twips angegeben; 567 Twip entsprechen je nach Bildschirmauflösung etwa einem cm.)

Methoden

Eine weitere Möglichkeit, die Merkmale eines VB-Elementes zu beeinflussen, ist die Anwendung von Methoden. Methoden sind zu beschreiben als Prozeduren eines Objektes. Sie werden, oft mit Angabe von Parametern, wie die Eigenschaften den Objekten hintenangestellt. Beispielsweise wird der Fokus (das Element, welches als nächstes eine Eingabe erwartet, hat den Fokus) auf eine Schaltfläche gesetzt mit

Command1.SetFocus()

Methoden sind Handlungsanweisungen für ein Objekt, anders als Eigenschaften, die nur eine Zustand beschreiben.

Objektvariablen

Um Objekte nicht mitsamt übergeordneten Objekten durch das gesamte Programm "schleppen" zu müssen, besteht in VBA die Möglichkeit, sog. Objektvariablen zu erzeugen. Sie werden wie "normale" Variablen deklariert, aber, anders als Variablen, nicht über einfache Zuweisung, sondern durch Verwendung des Schlüsselwortes Set mit einem Wert belegt. Als Wert wird jedoch nur ein Verweis auf das Objekt in der Variablen gespeichert. Dies ist zu vergleichen mit den Zeigern in der Sprache C/C++.

Beispiel:

Dim C1 As Objekt
Set C1 = Form1.Command1 
C1.Height = 100

Wird die Eigenschaft der Objektvariablen geändert, ändert sich auch die entsprechende Eigenschaft des Objektes. Anders als bei numerischen oder String-Variablen, die in dieser Beziehung autark reagieren. Wird eine Zahl-Variable geändert, ist die Änderung nur auf diese einzelne Variable beschränkt.

Auch der Datentyp Variant eignet sich als Objektvariable. Zwar ist dann die Nutzung des Default-Objektes nicht mehr möglich (siehe /1/), der Programmierer wird damit aber um so flexibler, was z.B. die Anzahl vorab definierter Variablen angeht. Bei bestimmten Anwendungen ist die Speicherung eines Objektzeigers in einer Variant-Variablen sogar die einzig zulässige Art. Ob eine Variante einen Zeiger auf ein Objekt enthält, kann mit der Funktion IsObjekt erfragt werden.

Auch eine konkretere Angabe der Objektart ist möglich. So könnte im letzten Beispiel auch Dim C1 As CommandButton stehen. Als Objekttypen erlaubt sind die Namen aller unter VBA verfügbaren Objekte.

Die With-Anweisung

Wenn viele Eigenschaften eines Objektes geändert werden sollen, vereinfacht oft die Programmierung einer With-Anweisung den Programmcode. Dabei wird der Objektname nur ein einziges Mal genannt. Die Eigenschaftsänderungen müssen dann, wie im folgenden Beispiel, nur mit einem Punkt beginnend zwischen die ein- und ausleitenden Schlüsselworte geschrieben werden:

With Form1.Command1
    .Height = 100
    .Width = 250
    .SetFocus
End With