Mal sehen ob ich hier auch noch was Sinnvolles beitragen kann. Wie ich vor längerer Zeit schon mal schrieb, hat jeder Programmierer seinen ganz eigenen Stil. In diesem Sinne kannst du natürlich das Zuweisen und Auslesen über Methoden machen. Da hast du Recht. Im Prinzip ist das Wurst. Aber intuitiv ist das nicht. Denn VBA lebt hauptsächlich von Eigenschaften. Diese werden als Ausdruck interpretiert. also z.B. mit = zugewiesen. Der Unterschied wurde dir von Trägheit bereits deutlich gemacht. Eine übliche Zuweisung erfolgt z.B. über myObject.Freetext = "Hallo", Auslesen und schreiben in eine Variable: Variable = myObject.Freetext
Natürlich kann man für das Auslesen auch eine Function verwenden, dann sind aber die Klammern etwas lästig Variable = myObject.getFreetext() und beim Zuweisen muss man bei deinem Stil darauf achten dass das = weggelassen wird: myObject.setFreetext "Hallo" Nur ist das Hallo hier dann ein Attribut der Zuweisungsmethode und nicht der wert einer Eigenschaft.
Das kann für NichtVBA-Profis schnell zur Falle werden und in Laufzeitfehlern münden. Denn so ein = ist schnell geschrieben. Dass das in deinem Fall dort nicht hingehört kann leicht übersehen werden.
Richtig spannend wird es aber dann, wenn du einen Mix aus beiden Varianten verwendest. Beispiel:
Private m_version As Integer
Public Property Get Version() As Integer
Version = m_version
End Property
Friend Sub Version(Wert As Integer)
m_version = Wert
End Sub
Mit diesem Code kannst du eine schreibgeschützte Eigenschaft erzeugen, die zwar innerhalb deines Projekts (also nur von dir) beschrieben werden kann. Aber von anderen Projekten aus nur ausgelesen werden kann. Schau dazu einfach mal in den Objektkatalog da gibt es viele schreibgeschützte Eigenschaften.
PS: Im falle von Version, kann man die Zuweisung natürlich auch direkt über Class_Initialize machen. Aber manchmal ist es halt nötig die Zuweisung zu einer schreibgeschützen Eigenschaft erst während der Laufzeit eines Makros zu erledigen.
Gruß Mr. K.
@Schreibmuffel: Ich hoffe ich habe jetzt nicht den Textrahmen gesprengt
|