Prozeduren und Parameter optimieren

Datenwerte zurückgeben: Properties statt Funktionen

∅ 2.7 / 3 Bewertungen

Properties statt Funktionen

Auf dieser Seite

Dazu brauchen Sie ein Property-Paar. Normalerweise besteht das Paar aus Let/Get, nur bei der Zuweisung von Objektvariablen muss es Set/Get heißen. Durch diesen Zusatz darf die Property wie im folgenden Listing namensgleich sein, denn der Compiler kann den lesenden und den schreibenden Zugriff auseinanderhalten.

Dim m_intAlter As Integer

Public Property Get Alter() As Integer
	Alter = m_intAlter
End Property

Public Property Let Alter(ByVal intWert As Integer)
	m_intAlter = intWert
End Property

Sub TesteAlter()
	Alter = 99	'neuen Inhalt zuweisen
	MsgBox "Alter: " & Alter	'jetzt ist 99 enthalten
End Sub

Ansonsten hat sich gegenüber dem Einsatz von Function und Sub aus dem vorigen Listing eigentlich nichts geändert, außer dass jetzt Anzahl und Typ der Parameter dieses Property-Pärchens zueinander passen müssen.

Daher ist es durchaus bequem, die beiden minimalen Prozedur-Rümpfe für Property Let und Property Get über das Menü Einfügen/Prozedur und den folgenden Dialog erstellen zu lassen.

58293_einfuegenprop01.png

Einfügen einer neuen Property

Dann erhalten Sie den im folgenden Listing gezeigten Code, der ziemlich standardisiert ohne zusätzliche Argumente und immer nur für das Let/Get-Paar erstellt wird.

Public Property Get DocEigenschaft() As Variant

End Property

Public Property Let DocEigenschaft(ByVal vNewValue As Variant)

End Property

Sowohl für Set/Get als auch weitere Argumente müssen Sie diese Code-Fragmente nachträglich ergänzen. Dabei können Sie identische Parameter hinzufügen, wobei die Property Let den hier vNewValue genannten Parameter immer am Ende zusätzlich hat. Dieser Parameter darf einen beliebigen Namen und Datentyp (aber immer passend zum Datentyp der Get-Property!) erhalten.

Der Aufruf dieser beiden noch funktionslosen Properties liest sich dann so:

Sub TesteProp()
	DocEigenschaft = "Test"
	MsgBox "Aktueller Wert: " & DocEigenschaft
End Sub

Da es aber verschiedene Dokument-Eigenschaften gibt, benötigen Sie noch einen zusätzlichen Parameter für den Eigenschafts-Namen, damit es brauchbar funktioniert.