Grundlagen der Programmierung mit VBA Visual Basic for
Grundlagen der Programmierung mit VBA Visual Basic for Grundlagen der Programmierung mit VBA Visual Basic for
3.7 Objekttechniken Die wesentliche Eigenschaft eines Objektes ist die Einheit von Daten und Methoden. Nur mit den Methoden, die der allgemeinen Benutzung freigegeben sind, kann man die Daten manipulieren. Man spricht von Datenkapselung. Auf diese Weise kann der Datenzugriff insbesondere bei großen Projekten geregelt werden und weitgehend fehlerfrei gestaltet werden. Die Definition eines Objektes erfolgt in einer sogenannten Objektklasse. Eine Klasse ist definiert durch die Daten und Methoden, sowie der jeweiligen Zugriffsrechte. Meist beinhaltet eine Objektklasse innere, man sagt private oder versteckte Daten und Prozeduren, auf die der Anwender keinen Zugriff hat, die aber für die Ausführung der Methoden wichtig sind. VBA sieht verschiedene Möglichkeiten vor, eigene Objekte zu definieren oder objektorientierte Arbeitsweisen zu entwickeln. Ein weiterer Vorteil einer solchen Arbeitsweise ergibt sich aus dem damit möglichen dynamischen Speicherzugriff bei der Definition von Objektsammlungen. 3.7.1 Property-Prozeduren Property-Prozeduren erlauben eine einfache Form der Datenkapselung. Variablen eines Modules sind anderen Modulen unsichtbar, wenn sie als Private vereinbart wurden. Man unterscheidet: Syntax Property Let ( Parameterliste ) Property Set ( Parameterliste ) Property Get ( Parameterliste ) As Typ Parameter Verwendung Let, Set Wertezuweisung, Let für Variablen, Set für Objektverweise Get Abfrage der Eigenschaftswerte > Die Anzahl der Argumente in der Get-Prozedur muß um eins kleiner sein als in der Let- bzw. Set-Prozedur > Die Datentypen der Parameterliste für Get müssen, abgesehen vom letzten Argument, der Let- bzw. Set-Prozeduren entsprechen > Der Typ des Rückgabewertes der Get-Prozedur muß dem Typ des letzten Parameters der Let- bzw. Set-Prozeduren entsprechen Beispiel. Eine ungewöhnliche Ermittlung des Mittelwertes. Option Explicit Private Summe As Double ' versteckte Modulvariablen Private Anzahl As Integer Property Let MW(Var As Double) ' Property Let: "Links vom Gleichheits- ' zeichen" If Var = 0 Then ' Initialisieren Summe = 0 Anzahl = 0 Else Summe = Summe + Var ' Summieren Anzahl = Anzahl + 1 End If End Property Property Get MW() As Double ' Property Get: "Rechts vom Gleich- ' heitszeichen" MW = Summe / Anzahl ' Auswerten End Property Sub TestMW() ' Anwendung Dim Mittel As Double Dim i As Integer MW = 0 ' Initialisieren 40
For i = 1 To 10 Step 3 MW = i ' Summieren Next Mittel = MW ' Auswerten MsgBox "Mittelwert = " & Mittel End Sub 3.7.2 Eigene Objektklassen Eine Objektklasse wird in einem eigenen Objektmodul verwaltet. Vor der eigentlichen Codierung muß deshalb zuerst ein neues Objektmodul erzeugt werden. Vorgehen: im VBE-Editor Menü Einfügen -> Klassenmodul Es wird ein neues Klassenmodul erzeugt. Name ändern mit Ansicht -> Eigenschaftsfenster. Klassenmodul "Ampel" im Projekt-Explorer Beispiel. Die Klasse "Eigenschaft". Eigene Klasse unter Verwendung von Property-Prozeduren. Der Inhalt des Klassenmoduls: Option Explicit Private Buffer As Integer ' Speicher: Interne gekapselte Variable Public Property Let Prop(Inp As Integer) ' Speicher belegen Buffer = Inp End Property Public Property Get Prop() As Integer ' Speicher abfragen Prop = Buffer End Property Public Function Modify() ' Speicher modifizieren und Buffer = Buffer + 20 ' abfragen Modify = Buffer End Function Anwenden der Klasse "Eigenschaft": Sub TryProp() Dim TP As New Eigenschaft ' Neue Instanz der Klasse Dim Inp As Integer ' Speicher belegen TP.Prop = CInt(InputBox("Bitte eine ganze Zahl eingeben")) 41
- Seite 1 und 2: Karlsruher Institut für Technologi
- Seite 3 und 4: Inhaltsverzeichnis 1 EINFÜHRUNG -
- Seite 5 und 6: Grundlagen der Programmierung mit V
- Seite 7 und 8: 1.3 Die Online Hilfe Die Online Hil
- Seite 9 und 10: Nach der Bestätigung öffnet sich
- Seite 11 und 12: 2.1.2 Der generierte VBA-Code Beim
- Seite 13 und 14: 2.2 Die Programmierumgebung Die Pro
- Seite 15 und 16: der Name des Excel-Projekts ausgew
- Seite 17 und 18: Debugger. Testhilfen für das Aufsp
- Seite 19 und 20: Das Überwachungsfenster. Wie das L
- Seite 21 und 22: 3 VBA-Sprachelemente 3.1 Modulare P
- Seite 23 und 24: Ein Parameterfeld variabler Länge.
- Seite 25 und 26: 3.2.8 Excel-Funktionen VBA-Funktion
- Seite 27 und 28: Beispiele. Dim Anzahl As Long Dim M
- Seite 29 und 30: Next i PrintMatrix (MatrixA): Print
- Seite 31 und 32: 3.4 Datentypen Die Datentypen unter
- Seite 33 und 34: Für Zahlen mit 28 Dezimalstellen g
- Seite 35 und 36: vbVariant 12 Variant (nur bei Daten
- Seite 37 und 38: 3.5.3 Verkettungsoperatoren Verkett
- Seite 39 und 40: Function Bewertung(Note As Single)
- Seite 41: 3.6.4 Behandlung von Benutzerfehler
- Seite 45 und 46: Aufgabe. Erstellen Sie analog zu de
- Seite 47 und 48: Public Sub Farbe(Item As Object, Co
- Seite 49 und 50: Sub StartZelle() Dim MatrixBereich
- Seite 51 und 52: 3.8.11 Clear und ClearContents-Meth
- Seite 53 und 54: Fahrt ' Ampel auf Grün schalten Au
- Seite 55 und 56: 4.3 Variablen Variablen sind Progra
- Seite 57 und 58: zahlenmäßig die Anzahl der Wieder
- Seite 59 und 60: 30% Problemanalyse und Anforderungs
- Seite 61 und 62: R6: Ampel defekt -> Polizei verstä
- Seite 63 und 64: 5.7 Struktogramm und Pseudocode Das
- Seite 65 und 66: Beispiel. Verkehrsverhalten an der
- Seite 67: 6 Literatur Ulrich Cluber VBA-Progr
3.7 Objekttechniken<br />
Die wesentliche Eigenschaft eines Objektes ist die Einheit von Daten und Methoden. Nur <strong>mit</strong> den Methoden,<br />
die <strong>der</strong> allgemeinen Benutzung freigegeben sind, kann man die Daten manipulieren. Man<br />
spricht von Datenkapselung. Auf diese Weise kann <strong>der</strong> Datenzugriff insbeson<strong>der</strong>e bei großen Projekten<br />
geregelt werden und weitgehend fehlerfrei gestaltet werden. Die Definition eines Objektes erfolgt<br />
in einer sogenannten Objektklasse. Eine Klasse ist definiert durch die Daten und Methoden, sowie <strong>der</strong><br />
jeweiligen Zugriffsrechte. Meist beinhaltet eine Objektklasse innere, man sagt private o<strong>der</strong> versteckte<br />
Daten und Prozeduren, auf die <strong>der</strong> Anwen<strong>der</strong> keinen Zugriff hat, die aber für die Ausführung <strong>der</strong> Methoden<br />
wichtig sind. <strong>VBA</strong> sieht verschiedene Möglichkeiten vor, eigene Objekte zu definieren o<strong>der</strong><br />
objektorientierte Arbeitsweisen zu entwickeln. Ein weiterer Vorteil einer solchen Arbeitsweise ergibt<br />
sich aus dem da<strong>mit</strong> möglichen dynamischen Speicherzugriff bei <strong>der</strong> Definition von Objektsammlungen.<br />
3.7.1 Property-Prozeduren<br />
Property-Prozeduren erlauben eine einfache Form <strong>der</strong> Datenkapselung. Variablen eines Modules sind<br />
an<strong>der</strong>en Modulen unsichtbar, wenn sie als Private vereinbart wurden. Man unterscheidet:<br />
Syntax<br />
Property Let ( Parameterliste )<br />
Property Set ( Parameterliste )<br />
Property Get ( Parameterliste ) As Typ<br />
Parameter Verwendung<br />
Let, Set Wertezuweisung, Let für Variablen, Set für Objektverweise<br />
Get Abfrage <strong>der</strong> Eigenschaftswerte<br />
> Die Anzahl <strong>der</strong> Argumente in <strong>der</strong> Get-Prozedur muß um eins kleiner sein als in <strong>der</strong> Let- bzw.<br />
Set-Prozedur<br />
> Die Datentypen <strong>der</strong> Parameterliste für Get müssen, abgesehen vom letzten Argument, <strong>der</strong> Let-<br />
bzw. Set-Prozeduren entsprechen<br />
> Der Typ des Rückgabewertes <strong>der</strong> Get-Prozedur muß dem Typ des letzten Parameters <strong>der</strong> Let-<br />
bzw. Set-Prozeduren entsprechen<br />
Beispiel. Eine ungewöhnliche Er<strong>mit</strong>tlung des Mittelwertes.<br />
Option Explicit<br />
Private Summe As Double ' versteckte Modulvariablen<br />
Private Anzahl As Integer<br />
Property Let MW(Var As Double) ' Property Let: "Links vom Gleichheits-<br />
' zeichen"<br />
If Var = 0 Then ' Initialisieren<br />
Summe = 0<br />
Anzahl = 0<br />
Else<br />
Summe = Summe + Var ' Summieren<br />
Anzahl = Anzahl + 1<br />
End If<br />
End Property<br />
Property Get MW() As Double ' Property Get: "Rechts vom Gleich-<br />
' heitszeichen"<br />
MW = Summe / Anzahl ' Auswerten<br />
End Property<br />
Sub TestMW() ' Anwendung<br />
Dim Mittel As Double<br />
Dim i As Integer<br />
MW = 0 ' Initialisieren<br />
40